Python学习笔记(十五) python3内置函数的相关练习
'''
第一部分:字符大小写相关
capitalize() title() istitle()
upper() isupper() lower() islower()
'''
message = 'this is a string example...wow!'
msg = message.capitalize() # 把字符串的首字符大写
print(msg)
msg = message.title() # 将所有单词首字母都大写
print(msg)
result = msg.istitle() # 判断一个字符串是否标题话,即所有单词首字母是否大写,结果是布尔类型
print(result)
msg = message.upper() # 将字符串所有字母转成大写
print(msg)
result = msg.lower() # 将字符串所有字母转成小写
print(result)
'''
案例:生成验证码
'''
import random
s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
# print(len(s)) # 计算字符串长度函数,返回值是一个整型数值
code = '' # 用一个空字符串变量存放生成后的验证码
# 循环4次,将4个不同的字符拼接后存放到code变量
for i in range(4):
rand_num = random.randint(0, len(s) - 1) # 所以范围应是(0, len(s) - 1),即0 - 61
# print(rand_num)
# print(s[rand_num]) # 当rand_num为62时,下标越界,报错:IndexError: string index out of range
code += s[rand_num] # 将生成的字符拼接存放到变量code
print('验证码是:', code, sep = '')
# 用户信息输入
username = input('请输入用户名:')
password = input('请输入密码:')
user_input_code = input('请输入验证码:')
# 验证用户输入的信息
if username == 'admin' and password == '123456':
if user_input_code.lower() == code.lower(): # 将验证码统一转成小写进行比较
print('登陆成功!欢迎用户{}'.format(username))
else:
print('验证码输入错误,请重新输入:')
else:
print('用户名或密码错误,请重新输入:')
'''
查找相关:
find() rfind() index() rindex()
4者格式统一:string.find(str, beg=0, end=len(string))
'''
'''
find()函数:
格式:string.find(str, beg=0, end=len(string))
作用:检测 str 是否包含在 string 中,如果使用 beg 和 end 指定范围,则检查是否包含在指定范围内,如果在范围内,返回开始的索引值,否则返回-1
'''
s1 = 'this is a string example...wow!'
print('s1 --->', s1)
result = 'A' in s1 # in 只能返回True或False,只能用于确定是否包含特定字符,不能确定其下标
print(result)
index = s1.find('A') # -1表示没找到特定字符
print(index)
index = s1.find('i') # 如果找到特定字符则返回第一次找到的字符所在下标
print('第一个i的下标:', index)
# find()格式:string.find(str, beg=0, end=len(string))
p = s1.find('i', index + 1) # 可以指定开始查找的位置
print('第二个i的下标:', p)
p2 = s1.find('o', index + 1, len(s1) - 4) # 也可以指定结束查找的位置
print('查找o的位置:', p2)
'''
rfind()小练习:
https://www.baidu.com/img/bd_logo1.png
1、获取文件名
2、获取扩展名
'''
url = 'https://www.baidu.com/img/bd_logo1.png'
index = url.rfind('/') # right find,从右侧检索/的位置
print(index)
file_name = url[index + 1 : ] # 获取文件名bd_logo1.png
print(file_name)
index2 = url.rfind('.') # 从右侧检索.的位置
print(index2)
expanded_name = url[index2 : ] # 获取扩展名.png
print(expanded_name)
# 或者
filename = url[url.rfind('/') + 1:] # # 获取文件名bd_logo1.png
print(filename)
expanded_name = url[url.rfind('.'):] # 获取扩展名.png
print(expanded_name)
'''
index()函数:
格式:string.index(str, beg=0, end=len(string))
作用:跟find()方法一样,只不过如果str不在 string中会报一个异常.
'''
# index()格式:string.index(str, beg=0, end=len(string))
index3 = 'hello'.index('x') # 没有找到,报异常ValueError: substring not found
print(index3)
'''
替换相关:
replace():
格式:string.replace(str1, str2, num=string.count(str1))
作用:把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
'''
s1 = 'this is a string example...wow!'
s2 = s1.replace(' ', '#')
print(s2)
s3 = s1.replace(' ', '', 3) # 指定替换3次
print(s3)
'''
编码与解码相关:
encode() 编码
格式:string.encode(encoding='UTF-8', errors='strict')
作用:以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
decode() 解码
格式:string.decode(encoding='UTF-8', errors='strict')
作用:以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'
应用场景:
网络应用,中文一般会设计编码问题
'''
msg = '上课啦!认真听课!' # 中文的字符串
# gbk:中文 gb2312:简体中文 unicode utf-8是unicode的升级版,国际通用
msg_encode = msg.encode('utf-8') # 讲中文字符串以utf-8格式编码,默认是utf-8,可不写
print(msg_encode) # 编码后成为字节对象
#b'\xe4\xb8\x8a\xe8\xaf\xbe\xe5\x95\xa6\xef\xbc\x81\xe8\xae\xa4\xe7\x9c\x9f\xe5\x90\xac\xe8\xae\xb2\xef\xbc\x81'
msg_decode = msg_encode.decode('utf-8') # 将字节对象以utf-8格式解码,默认是utf-8,可省略不写
print(msg_decode)
'''
检查字符串开头结尾相关:
startswith()
格式:string.startswith(obj, beg=0, end=len(string))
作用:检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
endswith()
格式:string.endswith(obj, beg=0, end=len(string))
作用:检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
两者返回值类型为布尔类型True或False
应用场景:
文件上传,限定只能上传图片(jpg, png, gif, bmp)
'''
s = 'hello'
result = s.startswith('H')
print(result)
result2 = s.startswith('he')
print(result2)
print('-------------------')
file_name = '笔记.doc'
result = file_name.endswith('txt')
print(result)
result2 = file_name.endswith('.doc')
print(result2)
'''
小案例:完成文件上传的验证功能,限定只能上传图片(jpg, png, bmp, gif)
1、给定一个路径,上传文件
2、如果不是对应的格式,允许重新指定上传文件
3、如果符合上传的规定则提示上传成功
'''
while True:
path = input('请选择要上传的文件:') # 获取路径D:\picture\desk_background.jpg
index = path.rfind('\\') # 获取文件名下标
file_name = path[index + 1 :] # 截取文件名
# print(index, file_name)
# 判断是否是图片类型,使用正则表达式会更简洁
if file_name.endswith('.jpg') or file_name.endswith('.png') or file_name.endswith('.gif'):
print('是图片,允许上传,上传成功!')
break
else:
print('格式错误,只允许上传图片,上传失败!')
'''
判断字符串是字母还是数字:
isalpha()
格式:string.isalpha()
作用:如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
isdigit()
格式:string.isdigit()
作用:如果 string 只包含数字则返回 True 否则返回 False.
isalnum()
格式:string.isalnum()
作用:如果string至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False
'''
s = 'abcde'
result = s.isalpha()
print(result)
s2 = 'abcde56'
result2 = s2.isalpha()
print(result2)
print(s2.isalnum()) # True
d = '6688'
result = d.isdigit()
print(result)
d2 = '6688ee'
result2 = d2.isdigit()
print(result2)
print(d2.isalnum()) # True
'''
小练习:输入3个数,相加求和
1、判断输入的是否是数字
2、判断输入的是正数还是负数
3、强转为int后求和
'''
i = 1
sum = 0
while i <= 3:
num = input('请输入第{}个数:'.format(i))
if num.startswith('-'): # 负数情况
num = num.replace('-', '')
if num.isdigit():
sum -= int(num)
print('负数:第{}个数字累加成功!'.format(i))
i += 1
print('sum =', sum)
continue # 累加成功,跳过本次循环,继续下次循环输入
else:
print('不是数字,请重新输入。')
elif num.isdigit(): # 正数情况
sum += int(num)
print('正数:第{}个数字累加成功!'.format(i))
i += 1
print('sum =', sum)
continue
else:
print('不是数字,请重新输入。')
print('最终结果sum =', sum)
'''
join()函数:
格式:string.join(seq)
作用:以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
示例:'-'.join('abc') 将abc用-连接构成一个新的字符串
'''
new_str = '-'.join('abc')
print(new_str)
# join()函数用途:字符串拼接,比+号更灵活,可指定拼接符
list1 = ['a', 'v', 'o', '9']
result = ''.join(list1) # 使用空字符拼接列表内容
print(result)
result = ' '.join(list1) # 使用空格拼接列表内容
print(result)
'''
strip():
格式:string.strip([obj])
作用:在 string 上执行 lstrip()和 rstrip()
lstrip():
格式:string.lstrip()
作用:截掉 string 字符串左边的空格及tab
rstrip():
格式:string.rstrip()
作用:删除 string 字符串右边的空格及tab
'''
s = ' hello '
s = s.strip()
print(s + '8') # 添加一个8方便观察
s = s.lstrip()
print(s + '8')
s = s.rstrip()
print(s + '8')
'''
split():
格式:string.split(str="", num=string.count(str))
作用:以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串
'''
s = 'hello world hello python'
print('原字符串:', s, '\n')
result = s.split(' ') # 以空格作为分割符,将切割后的个体字符串保存到列表中
print(result)
n = s.count(' ') # 计算字符串s中空格的个数
print('字符串s中的空格个数:', n)
result = s.split(' ', 2) # 以空格作为分割符,切割两次,将切割后的个体字符串保存到列表中
print(result)
- 点赞
- 收藏
- 关注作者
评论(0)