目录
一、序列及序列运算符。
1、序列定义
序列是Python中一大类数据容器的统称,容器中每个数据都会分配一个唯一序号,即索引(下标),可以简单将其类比成C语言中的数组。Python包含6中内建序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。
2、序列运算符
操作 | 描述 |
---|---|
x+y | 连接序列x与y,生成一个新序列 |
x*n | 将序列x重复n次,生成一个新序列 |
x[i] | 引用x序列中下标为i的成员 |
x[start:end:step] | 步长为step的引用下标为start至end-1的子序列 |
len(x) | 统计序列x成员个数,即得到序列x的长度 |
max(x) | 序列x中的最大值 |
min(x) | 序列x中的最小值 |
v in x | 判断v是否在序列x中,结果返回布尔值 |
二、原始字符串
在一个字符串前加r,表示该字符串内的\不是转义字符前缀,而是需要直接编入字符串中。
a='hello\nword' #hello
#word
b=r'hello\nword' #hello\nword
三、字符串查找操作
格式:字符串变量.find(查找内容,start,end)
其中,start和end可以不指定,end不包括在内。查找成功返回成员索引值,查找失败返回-1.
rfind()是从右往左查找,index()和find()功能一致,但是查找失败直接报错。
四、字符串计数操作
格式:字符串变量.count(计数内容,start,end)
返回计数内容出现的次数,没有则返回0。
五、字符串判断操作
字符串变量.startswith(‘*’),判断字符串是不是以*开头的。
字符串变量.endswith(‘*’),判断字符串是不是以*结尾的。(可以用来判断上传的文件是什么类型)
字符串变量.isalpha(),判断一个字符串是不是全是字母,是返回True,否则返回False。
字符串变量.isdigit(),判断一个字符串是不是全是数字,是返回True,否则返回False。
字符串变量.isalnum(),判断一个字符串是不是全是数字和字母,是返回True,否则返回False。
字符串变量.isspace(),判断一个字符串是不是空白字符串,是返回True,否则返回False。
六、字符串替换操作
格式:字符串变量.replace(old,new,count) #count表示替换次数,默认为无穷
将old字符替换成new字符,可用于屏蔽敏感词汇。
注意:字符串里面的单个字符可以通过索引展现出来,但不可通过索引对其进行重新赋值。所以,对于字符串的修改只能使用替换函数replace()。
七、字符串切割操作
格式:字符串变量.split('*') # 按*来切割,切割完之后存放在一个列表里面
八、字符串大小写操作
字符串名.title(),将字符串首字母大写。
字符串名.lower(),将字符串变小写。
字符串名.upper(),将字符串变大写。
九、空格处理
对于字符串的空格处理是十分有必要的。因为在用户输入时,有可能在输入字符串之后,不小心按到了空格,在视觉上是看不到这些空格的,但字符串里面又包含进了这些空格,所以可能会对我们后续的操作产生一些影响。因此,我们在接收用户输入的字符串时,应该首先对其进行空格处理。
字符串名.strip(),删除前后空格。
字符串名.lstrip(),删除左空格。
字符串名.rstrip(),删除右空格。
十、字符串格式化
1、占位符格式化,%d,%f,%s等。
2、format()函数,和占位符类似。用{}占位,字符串后跟.format(),参数为占位处需要填入的内容。
注意:{}数量可以少于format()中参数的数量,从左到右依次填入。反之则会报错。
name = 'xuan'
age = 18
print('{}同学今年{}岁'.format(name, age))
此外,format()函数可以在{}中指定序号表示哪个值能够被填入,并且可以重复填入。
name = 'xuan'
age = 18
print('{0}同学今年{1}岁,我今年也{1}岁。'.format(name, age)) #默认从0开始序号
十一、代码练习
1、模拟文件上传,键盘输入文件名。如果文件后缀名不为.jpg、.png、.gif则提示上传失败,如果后缀名满足要求,但文件名少于6个字符,则随机生成一个六位数字作为文件名,然后打印“**文件上传成功”。
import random
while True:
get_file = input('请上传文件(仅支持后缀名为.jpg、.png、.gif的文件):\n')
if get_file.endswith('.jpg') or get_file.endswith('.png') or get_file.endswith('.gif'): #接受这三种格式的文件
houzhui = get_file[-4:] #提取后缀名,方便后续随机生成六位数文件名
wenjian = get_file[:-4] #提取文件名,用于判断文件名是否有六个字符
if len(wenjian) < 6: #文件名不足六个字符,则随机生成一个六位数字
newname = str(random.randint(100000, 999999))
newname = newname + houzhui
print('%s文件上传成功!' % newname)
break
else:
print('%s文件上传成功!' % get_file)
break
else: #格式不满足提示重新上传,此时继续循环
print('文件不符合上传类型!请重新上传!')
2、产生一个六位随机验证码,随机生成大写字母、小写字母和数字。区分大小写,错误三次则提示账号锁定。
区分大小写版本:
import random
count = 0 #记录错误的次数
while True:
if count==3: #判断是否已经错误三次
print('验证码错误三次,账号已锁定!')
break
random_str = '' #定义一个空字符串用于存放随机验证码
s = 'QWERTYUIOPASDFGHJKLZXCVBNMzxcvbnmasdfghjklqwertyuiop1234567890' #用于产生随机验证码的序列
for i in range(6): #6位验证码
index = random.randint(0, len(s) - 1)
random_str += s[index]
print(random_str)
get_str = input('请输入验证码:')
if get_str == random_str:
print('验证码正确')
break
else:
print('验证码错误')
count += 1 #错误次数加1
不区分大小写版本,就是在上面的版本代码里,比较验证码与输入是否一致之前,将验证码与输入全部转化成小写再比较。
import random
count = 0 # 记录错误的次数
while True:
if count == 3: # 判断是否已经错误三次
print('验证码错误三次,账号已锁定!')
break
random_str = '' # 定义一个空字符串用于存放随机验证码
s = 'QWERTYUIOPASDFGHJKLZXCVBNMzxcvbnmasdfghjklqwertyuiop1234567890' # 用于产生随机验证码的序列
for i in range(6): # 6位验证码
index = random.randint(0, len(s) - 1)
random_str += s[index]
print(random_str)
get_str = input('请输入验证码:')
random_str = random_str.lower() #将验证码与输入全部转化为小写
get_str = get_str.lower()
if get_str == random_str:
print('验证码正确')
break
else:
print('验证码错误')
count += 1 # 错误次数加1