[ python ] 字符串的操作及作业题
字符串的操作方法
capitalize() : 首字母大写
s1 = 'my heart will go on' print(s1.capitalize()) # 首字母大写 # 执行结果: # My heart will go on
upper() : 全部大写
s1 = 'my heart will go on' print(s1.upper()) # 全部转为大写 # 执行结果: # MY HEART WILL GO ON
lower() : 全部小写
s1 = 'my heart will go on' print(s1.lower()) # 全部转为小写 # 执行结果: # my heart will go on
这里写一个使用大小写转换的实例,验证码的比较:
auth_code = 'KDwq' user_code = input('请输入验证码(不区分大小写):') if user_code.upper() == auth_code.upper(): # 将验证码和用户输入的字符统一转换为大写进行比较; print('验证成功.') else: print('验证失败.')
swapcase() : 大小写反转
s1 = 'MY HEART will go ON' print(s1.swapcase()) # 大小写反转;大写转换为小写,小写转换为大写 # 执行结果: # my heart WILL GO on
title(): 标题首字母大写
s1 = 'MY HEART will go ON' print(s1.title()) # 标题首字母大写,用空格隔开的每个单词都当作一个标题处理 # # 执行结果: # My Heart Will Go On
center(): 居中,默认填充空格
s1 = 'MY HEART will go ON' print(s1.center(30, '#')) # 居中显示,第一个参数是位宽int类型,第二个参数是占位符,str类型; # 执行结果: # #####MY HEART will go ON######
startswith(): 以什么开头,返回 bool 值
s1 = 'nice to meeting you' print(s1.startswith('ni')) # 判断以什么字符串开始,返回bool类型,正确返回 True,错误返回 False # 执行结果: # True print(s1.startswith('no')) # 执行结果: # False
endswith(): 以什么结尾,返回 bool 值
s1 = 'nice to meeting you' print(s1.endswith('you')) # 判断以什么字符串结尾,返回bool类型,正确返回 True,错误返回 False # 执行结果: # True print(s1.endswith('yyy')) # 执行结果: # False
find() 和 index() 都是通过元素找索引的方法,区别如下:
find()方法:元素存在打印索引,元素不存在返回 -1
index()方法:元素存在打印索引,元素不存在报错。错误信息:ValueError: substring not found
s1 = 'nice to meeting you' print(s1.find('to')) # 执行结果: # 5 print(s1.find('xxx')) # 执行结果: # -1 print(s1.index('to')) # 执行结果: # 5 # print(s1.index('xxx')) # 执行结果: # ValueError: substring not found
所以,在程序中应当使用 find() 来查找索引,尽量避免程序出现报错信息
strip(): 默认去除行首和行尾的空格;
rstrip() 从左删
lstrip() 从右删
s1 = ' nice to meeting you ' print(s1.strip()) # 默认去除开头和结尾的空格部分; # 执行结果: # nice to meeting you s1 = '#######nice to meeting you#######' print(s1.strip('#')) # 第一个参数为开头和结尾要去除的字符 # 执行结果: # nice to meeting you
count():统计字符串出现个数
s1 = 'adfasdfasdfasdfertadf' print(s1.count('a')) # 统计字符串出现的次数 # 执行结果: # 5
split(): 按照指定字符分隔成多个元素 str --> list
s1 = 'nice to meeting you' print(s1.split()) # 默认将字符串通过空格分隔并组成列表类型 # 执行结果: # ['nice', 'to', 'meeting', 'you']
format 有三种用法:
print('我叫{}, 跟我念一遍:{}, 年龄:{}, 爱好:{}'.format('clot', 'clot', 20, '摄影')) print('我叫{0}, 跟我念一遍:{0}, 年龄:{1}, 爱好:{2}'.format('clot', 20, '摄影')) print('我叫{name}, 跟我念一遍:{name}, 年龄:{age}, 爱好:{hobby}'.format(name='clot', age=20, hobby='摄影')) # 执行结果: # # 我叫clot, 跟我念一遍:clot, 年龄:20, 爱好:摄影 # 我叫clot, 跟我念一遍:clot, 年龄:20, 爱好:摄影 # 我叫clot, 跟我念一遍:clot, 年龄:20, 爱好:摄影
replace(): 字符串替换
s1 = 'nice to meeting you' print(s1.replace('meeting', 'see')) # 在字符串中,用第一个参数替换掉第二个参数,默认是匹配上则全部替换 # 执行结果: # nice to see you
isdigit(): 判断字符串是否全部是数字组成
s1 = '123123123123' print(s1.isdigit()) # 判断字符串是否全部由数字组成,小数点无法匹配上,返回bool类型; # 执行结果: # True
isalpha():判断字符串是否全是字母组成
s1 = 'asdfasdf' print(s1.isalpha()) # 判断字符串是否全部由字母组成,返回bool类型; # 执行结果: # True
isalnum():判断字符串是否由数字和字母组成
s1 = 'asdfa234asdf' print(s1.isalnum()) # 判断字符串是否全部由字母或字母组成,返回bool类型; # 执行结果: # True
作业题
1. 判断下列逻辑语句的 True、False
1) 1 > 1 or 3 > 4 or 4 > 5 and 2> 1 and 9 > 8 or 7 < 6
2) not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
3) 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2
2. 求出下列逻辑语句的值。
1) 8 or 3 and 4 or 2 and 0 or 9 and 7
2) 0 or 2 and 3 and 4 or 6 and 0 or 3
3) 5 and 9 or 10 and 2 or 3 and 5 or 4 or 5
3. 下列结果是什么?
1) 6 or 2 > 1
2) 3 or 2 > 1
3) 0 or 5 < 4
4) 5 < 4 or 3
5) 2 > 1 or 6
6) 3 and 2 > 1
7) 0 and 3 > 1
8) 2 > 1 and 3
9) 3 > 1 and 0
10) 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
4. 写代码:计算 1-2+3...+99 中除了88意外所有数的总和?
以下 F 表示: False, T 表示:True 1. 判断下列逻辑语句的 True、False 1) 1 > 1 or 3 > 4 or 4 > 5 and 2> 1 and 9 > 8 or 7 < 6 计算过程: # 1 > 1 or 3 > 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 # 1 > 1 or 3 > 4 or F and 9 > 8 or 7 < 6 # 1 > 1 or 3 > 4 or F or 7 < 6 # F or F or 7 < 6 # F or 7 < 6 # F 2) not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 计算过程: # F and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 # F or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 # F or F and 9 > 8 or 7 < 6 # F or F or 7 < 6 # F or 7 < 6 # F 3) 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2 计算过程: # 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2 # F or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2 # F or F or 9 < 8 and 4 > 6 or 3 < 2 # F or F or F or 3 < 2 # F or F or 3 < 2 # F or 3 < 2 # F 2. 求出下列逻辑语句的值。 1) 8 or 3 and 4 or 2 and 0 or 9 and 7 计算过程: # 8 or 3 and 4 or 2 and 0 or 9 and 7 # 8 or 4 or 0 or 7 # 8 or 0 or 7 # 8 or 7 # 8 2) 0 or 2 and 3 and 4 or 6 and 0 or 3 计算过程: # 0 or 2 and 3 and 4 or 6 and 0 or 3 # 0 or 3 and 4 or 6 and 0 or 3 # 0 or 4 or 6 and 0 or 3 # 0 or 4 or 0 or 3 # 4 or 0 or 3 # 4 or 3 # 4 3) 5 and 9 or 10 and 2 or 3 and 5 or 4 or 5 计算过程: # 5 and 9 or 10 and 2 or 3 and 5 or 4 or 5 # 9 or 10 and 2 or 3 and 5 or 4 or 5 # 9 or 2 or 3 and 5 or 4 or 5 # 9 or 2 or 5 or 4 or 5 # 9 or 5 or 4 or 5 # 9 or 4 or 5 # 9 or 5 # 9 3. 下列结果是什么? 提示: (1)牢记优先级:not > and > or (2)and 取值 从前往后, (a) 第一个数的bool值为 False,那就直接返回第一个数(0就返回0,False就返回False); (b) 如果第一个数的bool值为 True,第二个数的bool值为 False,则返回第二个数的值; (c) 如果两个数的bool值都为True,则返回第二个数. (d) 如果两个数的bool值都为False,则返回第一个数. (3)or 取值 从前往后, (a) 第一个数的bool值为 False,那就直接返回第二个数; (b) 如果第一个数的bool值为 True,第二个数的bool值为 False,则返回第一个数的值; (c) 如果两个数的bool值都为True,则返回第一个数. (d) 如果两个数的bool值都为False,则返回第二个数. 1) 6 or 2 > 1 计算过程: print(6 or 2 > 1) # 6 or 2 > 1 # 6 or T # 6 2) 3 or 2 > 1 计算过程: print(6 or 2 > 1) # 6 or 2 > 1 # 6 or T # 6 3) 0 or 5 < 4 计算过程: print(0 or 5 < 4) # 0 or 5 < 4 # 0 or F # False 4) 5 < 4 or 3 计算过程: print(5 < 4 or 3) # 5 < 4 or 3 # F or 3 # 3 5) 2 > 1 or 6 计算过程: print(2 > 1 or 6) # 2 > 1 or 6 # T or 6 # T 6) 3 and 2 > 1 计算过程: print(3 and 2 > 1) # 3 and 2 > 1 # 3 and T # T 7) 0 and 3 > 1 计算过程: print(0 and 3 > 1) # 0 and 3 > 1 # 0 and T # 0 8) 2 > 1 and 3 计算过程: print(2 > 1 and 3) # 2 > 1 and 3 # T and 3 # 3 9) 3 > 1 and 0 计算过程: print(3 > 1 and 0) # 3 > 1 and 0 # T and 0 # 0 10) 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2 计算过程: print(3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2) # 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2 # T and 2 or 2 < 3 and 3 and 4 or 3 > 2 # 2 or 2 < 3 and 3 and 4 or 3 > 2 # 2 or F and 3 and 4 or 3 > 2 # 2 or F and 4 or 3 > 2 # 2 or F or 3 > 2 # 2 or 3 > 2 # 2 or T # 2 4. 写代码:计算 1-2+3...+99 中除了88意外所有数的总和? num = 0 count = 0 while count < 100: count += 1 # count = count + 1 必须写在 continue 之前,否则进入死循环 if count == 88: continue if count % 2: # 获取奇数 num += count else: num -= count print(num)