蓝桥杯Python快速入门(4)

目录

01、字符串

【字符串格式化】

【字符串常用方法】

1.去掉空格和特殊符号

2.字符串的搜索和替换

3.字符串的测试和替换函数

4.字符串的分割

5.连接字符串

6.截取字符串(切片)

7.求值

8.关键字in 

【字符串常量】

02、异常处理(简单看看)

【案例精选】

【例题1】最大公约数

【例题2】除法

【例题3】最大公约数、除法


01、字符串

  • 字符串属于不可变序列类型,使用单引号、双引号、三单引号或三双引号作为界定符(单引号和双引号在python不做区分),不同界定符之间可以互相嵌套
  • 支持序列通用方法,包括比较、计算长度、元素访问、切片
  • 支持一些特有的操作方法,包括格式化操作、字符串查找、字符串替换等
  • 不支持元素增加、修改与删除等操作
  • Python 3.x中字符串类型为str类型
  • Python 3.x中,程序源文件默认为UTF-8编码

【字符串格式化】

形式:

  • ' %[-][+][0][m][.n]格式字符% ' 表达式
print('%10d'%3)      #          3
print('%.4f'%3.14159)# 3.1416
print("%c"%65)       # A (打印字符)
print("%s"%65)       # 65(打印字符串)
print('%s'%[1,2,3])  # [1, 2, 3]
print(str([1,2,3]))  # [1, 2, 3]
print('%d'%'123')    # TypeError: %d format: a number is required, not str
  • 使用format( )方法进行格式化
print('The number {0:,} in hex is:{0:#x}, the number {1} in oct is {1:#o}'.format(123456,789))  # ,是千分号 #x是十六进制 #o是八进制
# The number 123,456 in hex is:0x1e240, the number 789 in oct is 0o1425
print('The number {1:,}in hex is:{1:#x}, the number {0} in oct is {0:#o}'.format(123456,789))
# The number 789in hex is:0x315, the number 123456 in oct is 0o361100

# > 向右对齐
print('my name is {name:>20},my age is {age} . '.format(name='yjg' ,age=22))
# my name is                  yjg,my age is 22 .

【字符串常用方法】

1.去掉空格和特殊符号

  • uname.strip()                 去掉空格和换行符
  • uname.strip('xx')            去掉某个字符串(只能去掉一个)
  • uname.Istrip()                去掉左边的空格和换行符
  • uname.rstrip()                去掉右边的空格和换行符
print(' abc '.strip())              # abc
print(' abc '.rstrip())             #  abc
print(' abc '.lstrip())             # abc
print('\nhello \nworld \n'.strip()) # hello 
                                    # world
print('abcdabcaba'.strip('a'))      # bcdabcab  只去掉了第一个a

2.字符串的搜索和替换

  • name.count('x')                                  查找某个字符在字符串里面出现的次数
  • name. capitalize()                              首字母大写
  • name.center(n,'-')                              把字符串放中间,两边用-补齐
  • name.find('x')                检测字符串中是否包含子子符串str ,如果指定beg(开始)和end(结束)范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1
  • name.index('x')             找到这个字符返回下标,多个时返回第一个;不存在的字符报错
  • name.replace(oldstr,newstr)              字符串替换
  • name.format ( )                                 字符串格式化
  • name.format_map(d)                        字符串格式化,传进去的是一个字典
s = "kiwifruit,lemon,lichee,orange,peach, banana,plum, carrot,maize"
print(s.find('peach'))      # 30
print(s.find('peach',7))    # 30    从7开始找
print(s.find('peach',7,20))# -1     在[7,20)上找
print(s.rfind('p'))        # 43     找最右边的p
print(s.index('p'))        # 30     第一个p的序号
print(s.index('pea'))      # 30
print(s.rindex('pea'))     # 30     找最右边的pea
print(s.count('p'))        # 2
print(s.count('pp'))       # 0

3.字符串的测试和替换函数

  • S.startswith(prefix[,start[,end]])        是否以prefix开头
  • S.endswith(suffix[,start[,end])          以suffix结尾
  • S.isalnum()                                      是否全是字母和数字,并至少有一个字符
  • S.isalpha()                                       是否全是字母,并至少有一个字符
  • S.isdigit()                                         是否全是数字,并至少有一个字符
  • S.isspace()                                      是否全是空白字符,并至少有一个字符
  • S.islower()                                       S中的字母是否全是小写
  • S.isupper()                                      S中的字母是否全是大写
  • S.istitle()                                          S是否是首字母大写
print('Beautiful '.startswith('Be'))    # True
print('Beautiful'.startswith('Be',5))   # False
print('Beautiful'.startswith('Be',0,5)) # True
print('Beautiful'.endswith('ful'))      # True
print( 'What is Your Name?'.lower())        # what is your nam?  小写
print( 'What is Your Name?'. upper())       # WHAT IS YOUR NAME? 大写
print( 'what is your name?'.capitalize())   # What is your name? 句的首字母大写
print( 'what is your name?'.title( ))       # What Is Your Name? 每个首字母大写
print( 'What is Your Name?'.swapcase())     # wHAT IS yOUR nAME? 交换大小写

4.字符串的分割

 split()通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个子字符串

split()返回一个列表

  • name.split()                 默认是按照空格分割
  • name.split(',')               按照逗号分割
s = "kiwifruit,lemon,lichee,orange,peach, banana,plum, carrot,maize"
print(s.split(','))        # 返回的是一个列表
# ['kiwifruit', 'lemon', 'lichee', 'orange', 'peach', ' banana', 'plum', ' carrot', 'maize']

s= '2022-12-26'
print(list( map( int,s.split('-')))) # [2022, 12, 26]

s='hello world My name is abc'
print(s.split( ))        #        ['hello', 'world', 'My', 'name', 'is', 'abc']
print(s.split(None,4))   # 只切4次 ['hello', 'world', 'My', 'name', 'is abc']

5.连接字符串

  •  ',' join(s)         用逗号连接s变成一个字符串,s可以是字符,列表,字典(可迭代的对象)。int类型不能被连接。
li=[ "kiwifruit", 'lemon', 'lichee', 'orange', 'peach']
# join将元素通过,连接在一起
print(',' .join(li)) # kiwifruit,lemon,lichee,orange,peach

6.截取字符串(切片)

str = '0123456789'
print(str[0:3])     #截取第一位到第三位的字符   012
print(str[6:])      #截取第七个字符到结尾      6789
print(str[2])       #截取第三个字符           2
print(str[ ::-1])   #创造一个与原字符串顺序相反的字符串    # 9876543210
print(str[-3:-1])   #截取倒数第三位与倒数第一位之前的字符  # 78
print(str[-3: ])    #截取倒数第三位到结尾               # 789

7.求值

eval函数可以将字符串转成表达式执行,例如print(eval(input('请输入')))

print(eval('3+4')) # 7
a,b=3,5
print(eval('a+b')) # 8
print(eval('math.sqrt(3)')) # 1.7320508075688772
print(eval('b'))   # 5

8.关键字in 

print('a' in 'abcde')    # True
print('ab' in 'abcde')   # True
print('j' in 'abcde')    # False

【字符串常量】

  • string.digits                   所有数字
  • string.ascii_letters        所有字母
  • string.ascii_lowercase  所有小写字母
  • string.ascii_uppercase  所有大写字母
import string
print( string.digits)
# 0123456789
print( string.ascii_letters)
# abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print( string.ascii_lowercase)
# abcdefghijklmnopqrstuvwxyz
print( string.ascii_uppercase)
# ABCDEFGHIJKLMNOPQRSTUVWXYZ    

02、异常处理(简单看看,不看也没问题)

  • 在编写程序的过程中,程序员通常希望识别正常执行的代码和执行异常的代码
  • 这种异常可能是程序的错误,也可以是不希望发生的事情。
  • 为了能够处理这些异常,可以在所有可能发生这种情况的地方使用条件语句进行判断。但这么做既效率低,也不灵活,而且还无法保证条件语句覆盖了所有可能的异常。
  • 为了更好地解决这个问题,Python语言提供了非常强大的异常处理机制。通过这种异常处理机制,可以直接处理所有发生的异常,也可以选择忽略这些异常。 

        开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。总的来说,编写程序时遇到的错误可大致分为2类:

  • 语法错误: print "Hello,World!”         Python 3不再支持这种写法
  • 运行错误: a= 1/0

在 Python 中,这种运行时产生错误的情况叫做异常(Exceptions)

 异常名称描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
 Exception常规错误的基类
Stoplteration迭代器没有更多的值
GeneratorExit生成器(generator)发生异常来通知退出
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
MemoryError内存溢出错误(对于Python解释器不是致命的)
NameError未声明/初始化对象(没有属性)
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError一般的运行时错误
NotlmplementedError尚未实现的方法
SyntaxError Python语法错误
lndentationError缩进错误
zeroDivisionError除(或取模)零(所有数据类型)
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF标记
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
lmportError导入模块/对象失败
LookupError无效数据查询的基类
  • 当一个程序发生异常时,代表该程序在执行时出现了非正常的情况,无法再执行下去。默认情况下,程序是要终止的。如果要避免程序退出,可以使用捕获异常的方式获取这个异常的名称,再通过其他的逻辑代码让程序继续运行,这种根据异常做出的逻辑处理叫作异常处理。
  • 开发者可以使用异常处理全面地控制自己的程序。异常处理不仅仅能够管理正常的流程运行,还能够在程序出错时对程序进行必要的处理。大大提高了程序的健壮性和人机交互的友好性。
  • 那么,应该如何捕获和处理异常呢?可以使用try语句来实现。

【案例精选】

【例题1】最大公约数

import math
while True:
    try:
        x,y=map(int, input('请输入两个整数: ').split( ))
        print('%d与%d的最大公约数为:%d'%(x, y,math.gcd(x,y)))
        break
    except ValueError:
        print('你输入的不是合法的数据,请重新输入...' )

【例题2】除法

x=3.5
try:
    y=float( input(‘请输入除数:'))z=x/y
except ZeroDivisionError:
    print('除数不能为0')
except ValueError:
    print('除数应为数值类型′)
else:
    print(x,'/',y,'=',z)

【例题3】除法

x=3.5
try:
    y=float( input('请输入除数:'))
    z=x/y
except BaseException as e:
    print('你输入的不是合法的数据' ,e)
else:
    print(x,'/ ',y,'=',z)
# 请输入除数:8
# 3.5/8.0=0.4375
# ==================
# 请输入除数: gh
# 你输入的不是合法的数据could not convertstring to float: 'gh'

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小叶pyか

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值