字符串作业及默写
1)移除 name 变量量对应的值两边的空格,并输出处理理结果
2)移除name变量量左边的"al"并输出处理理结果
3)移除name变量量右⾯面的"Nb",并输出处理理结果
4)移除name变量量开头的a"与最后的"b",并输出处理理结果
5)判断 name 变量量是否以 "al" 开头,并输出结果
6)判断name变量量是否以"Nb"结尾,并输出结果
7)将 name 变量量对应的值中的 所有的"l" 替换为 "p",并输出结果
8)将name变量量对应的值中的第⼀一个"l"替换成"p",并输出结果
9)将 name 变量量对应的值根据 所有的"l" 分割,并输出结果。
10)将name变量量对应的值根据第⼀一个"l"分割,并输出结果。
11)将 name 变量量对应的值变⼤大写,并输出结果
12)将 name 变量量对应的值变⼩小写,并输出结果
13)将name变量量对应的值⾸首字⺟母"a"⼤大写,并输出结果
14)判断name变量量对应的值字⺟母"l"出现⼏几次,并输出结果
15)如果判断name变量量对应的值前四位"l"出现⼏几次,并输出结果
16)从name变量量对应的值中找到"N"对应的索引(如果找不不到则报错),并输出结果
17)从name变量量对应的值中找到"N"对应的索引(如果找不不到则返回-1)输出结果
18)从name变量量对应的值中找到"X le"对应的索引,并输出结果
19)请输出 name 变量量对应的值的第 2 个字符?
20)请输出 name 变量量对应的值的前 3 个字符?
21)请输出 name 变量量对应的值的后 2 个字符?
22)请输出 name 变量量对应的值中 "e" 所在索引位置?
2.有字符串串s = "123a4b5c"
1)通过对s切⽚片形成新的字符串串s1,s1 = "123"
2)通过对s切⽚片形成新的字符串串s2,s2 = "a4b"
3)通过对s切⽚片形成新的字符串串s3,s3 = "1345"
4)通过对s切⽚片形成字符串串s4,s4 = "2ab"
5)通过对s切⽚片形成字符串串s5,s5 = "c"
6)通过对s切⽚片形成字符串串s6,s6 = "ba2"
3.使⽤用while和for循环分别打印字符串串s="asdfer"中每个元素。
4.使⽤用for循环对s="asdfer"进⾏行行循环,但是每次打印的内容都是"asdfer"。
5.使⽤用for循环对s="abcdefg"进⾏行行循环,每次打印的内容是每个字符加上sb,例例如:asb, bsb,csb,...gsb。
10、写代码,完成下列列需求:
⽤用户可持续输⼊入(⽤用while循环),⽤用户使⽤用的情况:
输⼊入A,则显示⾛走⼤大路路回家,然后在让⽤用户进⼀一步选择:
是选择公交⻋车,还是步⾏行行?
选择公交⻋车,显示10分钟到家,并退出整个程序。
选择步⾏行行,显示20分钟到家,并退出整个程序。
输⼊入B,则显示⾛走⼩小路路回家,并退出整个程序。
输⼊入C,则显示绕道回家,然后在让⽤用户进⼀一步选择:
是选择游戏厅玩会,还是⽹网吧?
选择游戏厅,则显示 ‘⼀一个半⼩小时到家,爸爸在家,拿棍等你。’并让其 重新输⼊入A,B,C选项。
选择⽹网吧,则显示‘两个⼩小时到家,妈妈已做好了了战⽃斗准备。’并让其重 新输⼊入A,B,C选项。
11、写代码:计算 1 - 2 + 3 ... + 99 中除了了88以外所有数的总和?
12. (升级题)判断⼀一句句话是否是回⽂文. 回⽂文: 正着念和反着念是⼀一样的. 例例如, 上海自来⽔来⾃海上(升级题)
13. 输⼊入⼀一个字符串串,要求判断在这个字符串串中⼤大写字⺟母,⼩小写字⺟母,数字,其它字符共出现了了多少次,并输出出来
14、制作趣味模板程序需求:等待⽤用户输⼊入名字、地点、爱好,根据⽤用户的名 字和爱好进⾏行行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅方⼲干xxx
百家姓:
first_names = """
赵钱孙李李,周吴郑王。
冯陈褚卫,蒋沈沈韩杨。
朱秦尤许,何吕施张。
孔曹严华,⾦金金魏陶姜。
戚谢邹喻,柏⽔水窦章。
云苏潘葛,奚范彭郎。
鲁⻙韦昌⻢马,苗凤花⽅方。
俞任袁柳柳,酆鲍史唐。
费廉岑薛,雷雷贺倪汤。
滕殷罗毕,郝邬安常。
乐于时傅,⽪皮卞⻬齐康。
伍余元⼘卜,顾孟平⻩黄。
和穆萧尹,姚邵湛汪。
祁⽑毛禹狄,⽶米⻉贝明臧。
计伏成戴,谈宋茅庞。
熊纪舒屈,项祝董梁梁。
杜阮阮蓝闵,席季麻强。
贾路路娄危,江童颜郭。
梅梅盛林林***,钟徐邱骆。
⾼高夏蔡⽥田,樊胡凌霍。
虞万⽀支柯,昝管卢莫。
经房裘缪,⼲干解应宗。
丁宣贲邓,郁单杭洪。
包诸左⽯石,崔吉钮龚。
程嵇邢滑,裴陆荣翁。
荀⽺羊於惠,甄曲家封。
芮羿储靳,汲邴糜松。
井段富巫,乌焦巴⼸弓。
牧隗⼭山⾕谷,⻋车侯宓蓬。
全郗班仰,秋仲伊宫。
宁仇栾暴暴,⽢甘钭厉戎。
祖武符刘,景詹束⻰龙。
叶幸司韶,郜黎蓟薄。
印宿⽩白怀,蒲邰从鄂。
索咸籍赖,卓蔺屠蒙。
"""
分别⽤用while,for循环输出字符串串s = input("你想输⼊入的内容")的每⼀一个 字符。
# 参考答案
# 1.有变量量name = "aleX leNb" 完成如下操作: name = "aleX leNb" # 1)移除 name 变量量对应的值两边的空格,并输出处理理结果 print(name.strip()) # 2)移除name变量量左边的"al"并输出处理理结果 print(name.replace('al', '')) # 3)移除name变量量右⾯面的"Nb",并输出处理理结果 print(name.replace('Nb', '')) # 4)移除name变量量开头的a"与最后的"b",并输出处理理结果 # print(name.lstrip('a').rstrip('b')) print(name.strip('ab'))##这样竟然可以!下面的也可以 s = 'abkkkba' print(s.strip('ab')) # 5)判断 name 变量量是否以 "al" 开头,并输出结果 print(name.startswith('al')) # 6)判断name变量量是否以"Nb"结尾,并输出结果 print(name.endswith('Nb')) # 7)将 name 变量量对应的值中的 所有的"l" 替换为 "p",并输出结果 print(name.replace('l', 'p')) # 8)将name变量量对应的值中的第⼀一个"l"替换成"p",并输出结果 print(name.replace('l', 'p', 1)) # 9)将 name 变量量对应的值根据 所有的"l" 分割,并输出结果。 print(name.split('l')) # 10)将name变量量对应的值根据第⼀一个"l"分割,并输出结果。 print(name.split('l', 1)) # 11)将 name 变量量对应的值变⼤大写,并输出结果 print(name.upper()) # 12)将 name 变量量对应的值变⼩小写,并输出结果 print(name.lower()) # 13)将name变量量对应的值⾸首字⺟母"a"⼤大写,并输出结果 print(name.capitalize()) # 14)判断name变量量对应的值字⺟母"l"出现⼏几次,并输出结果 print(name.count('l')) # 15)如果判断name变量量对应的值前四位"l"出现⼏几次,并输出结果 print(name[:4].count('l')) print(name.count('l',0,4))## # 16)从name变量量对应的值中找到"N"对应的索引(如果找不不到则报错),并输出结果 print(name.index('N')) # 17)从name变量量对应的值中找到"N"对应的索引(如果找不不到则返回-1)输出结果 print(name.find('N')) # 18)从name变量量对应的值中找到"X le"对应的索引,并输出结果 print(name.find('X le')) print(name.index('X le')) # 19)请输出 name 变量量对应的值的第 2 个字符? print(name[1]) # 20)请输出 name 变量量对应的值的前 3 个字符? print(name[:3]) # 21)请输出 name 变量量对应的值的后 2 个字符? print(name[-2:]) # 22)请输出 name 变量量对应的值中 "e" 所在索引位置? s0 = name[name.index('e')+1:] print(name.index('e'), name.index('e')+s0.index('e')+1) ##老师的,直接遍历字符串,打印出 e 的索引. 上面的我的做法如果很多'e'就很尴尬了 i = 0 while i < len(name): if name[i] == 'e': print(i) i += 1 # 2.有字符串串s = "123a4b5c" s = "123a4b5c" # 1)通过对s切⽚片形成新的字符串串s1,s1 = "123" s1 = s[:3] print(s1) # 2)通过对s切⽚片形成新的字符串串s2,s2 = "a4b" s2 = s[3:6] print(s2) # 3)通过对s切⽚片形成新的字符串串s3,s3 = "1345" s3 = s[::2] print(s3) # 4)通过对s切⽚片形成字符串串s4,s4 = "2ab" s4 = s[1:6:2] print(s4) # 5)通过对s切⽚片形成字符串串s5,s5 = "c" s5 = s[-1] print(s5) # 6)通过对s切⽚片形成字符串串s6,s6 = "ba2" s6 = s[-3::-2] print(s6) # 3.使⽤用while和for循环分别打印字符串串s="asdfer"中每个元素。 s = "asdfer" #使用 while 循环实现 i = 0 while i < len(s): print(s[i]) i += 1 #使用 for 循环实现 for c in s: print(c) # 4.使⽤用for循环对s="asdfer"进⾏行行循环,但是每次打印的内容都是"asdfer"。 s = "asdfer" for c in s: print(s) # 5.使⽤用for循环对s="abcdefg"进⾏行行循环,每次打印的内容是每个字符加上sb, # 例例如:asb, bsb,csb,...gsb。 s = "abcdefg" for c in s: print(c+'sb') # 6.使⽤用for循环对s="321"进⾏行行循环,打印的内容依次是:"倒计时3秒","倒计时 # 2秒","倒计时1秒","出发!"。 s = "321" for c in s: print('倒计时%s秒' % c) else:#当 for 中的循环正常结束之后自动执行 else.break 不会触发 else的执行 都类似于 if...else print("出发!") # 7,实现⼀一个整数加法计算器器(两个数相加): # 如:content = input("请输⼊入内容:") ⽤用户输⼊入:5+9或5+ 9或5 + 9,然后进 # ⾏行行分割再进⾏行行计算。 content = input("请输⼊入内容:").replace(' ', '').split('+') # 先去空,再分割 sum = 0 for c in content: if c.isdigit(): c = int(c) sum += c print(sum) #方法2:老师讲解的 content = input("请输⼊入内容:") lst = content.split("+") #只有2个数的 a = lst[0] b = lst[1] print(int(a) + int(b))#上面是直接切割没有先去空,也不会报错,原因是 int(str)相当于 strip()的功能,可以去除每个元素两端的空白 # 8,升级题:实现一个整数加法计算器(多个数相加): # 如:content = input("请输⼊入内容:") ⽤用户输⼊入:5+9+6 +12+ 13,然后进⾏分割再进行计算。 #方法1:自己写的 content = input("请输⼊入内容:").replace(' ', '').split('+') # 先去空,再分割 sum = 0 for c in content: if c.isdigit():#按照题目要求已知输入的是数字的情况下就不用再判断了 c = int(c)#int(str)相当于 strip()的功能,可以去除每个元素两端的空白 sum += c print(sum) #方法2:老师讲的,多个数相加 content = input("请输⼊入内容:") lst = content.split("+") sum = 0 for el in lst:#使用 for 循环遍历列表 sum += int(el) #累加 int(str)相当于 strip()的功能,可以去除每个元素两端的空白 print(sum) # 9,计算⽤用户输⼊入的内容中有⼏几个整数(以个位数为单位)。 # 如:content = input("请输⼊入内容:") # 如fhdal234slfh98769fjdla content = input("请输⼊入内容:") i = 0 for c in content: if c.isdigit(): i += 1 print(i) # 10、写代码,完成下列列需求: # ⽤用户可持续输⼊入(⽤用while循环),⽤用户使⽤用的情况: # 输⼊入A,则显示⾛走⼤大路路回家,然后在让⽤用户进⼀一步选择: # 是选择公交⻋车,还是步⾏行行? # 选择公交⻋车,显示10分钟到家,并退出整个程序。 # 选择步⾏行行,显示20分钟到家,并退出整个程序。 # 输⼊入B,则显示⾛走⼩小路路回家,并退出整个程序。 # 输⼊入C,则显示绕道回家,然后在让⽤用户进⼀一步选择: # 是选择游戏厅玩会,还是⽹网吧? # 选择游戏厅,则显示 ‘⼀一个半⼩小时到家,爸爸在家,拿棍等你。’并让其 重新输⼊入A,B,C选项。 # 选择⽹网吧,则显示‘两个⼩小时到家,妈妈已做好了了战⽃斗准备。’并让其重 新输⼊入A,B,C选项。 while True:#写成 while 1: 比较好 choice = input('请选择回家的路(A-走大路|B-走小路|C-绕道):').strip().upper()#这里变大写,只需要使用一次 if choice == 'A': print('走大路回家') choice_A = input('请选择(公交车|步⾏):').strip() if choice_A == '公交车': print('10分钟到家') elif choice_A == '步⾏': print('20分钟到家') break ##两种情况相同提取出来 elif choice == 'B': print('走小路回家') break elif choice == 'C': print('绕道回家') choice_C = input('请选择(游戏厅|网吧)玩会:').strip() if choice_C == '游戏厅': print('一个半⼩小时到家,爸爸在家,拿棍等你') elif choice_C == '网吧': print('两个⼩小时到家,妈妈已做好了了战⽃斗准备') #continue #这个不用写就会回到开始进行循环 else: print('没有这条回家的路,请重新选择') #continue #这个不用写就会回到开始进行循环 # 11、写代码:计算 1 - 2 + 3 ... + 99 中除了了88以外所有数的总和? # 方法1:我写的 count = 1 sum = 0 while count < 100: if count % 2 == 1: # 奇数加上 sum += count elif count != 88: sum -= count # 偶数减去 count += 1 print(sum) #方法2:老师讲的 count = 1 sum = 0 while count < 100: if count == 88:#当时88的时候,变量增加但是不求和 i += 1 continue if count % 2 == 1: # 奇数加上 sum += count elif count != 88: sum -= count # 偶数减去 count += 1 print(sum) # 12. (升级题)判断⼀一句句话是否是回⽂文. 回⽂文: 正着念和反着念是⼀一样的. 例例如, 上海海 # ⾃自来⽔水来⾃自海海上(升级题)上海自来水来自海上 s = input('请输入一句话:').strip() s1 = s[::-1] if s == s1: print('是回⽂') else: print('不是回⽂') # 13. 输⼊入⼀一个字符串串,要求判断在这个字符串串中⼤大写字⺟母,⼩小写字⺟母,数字, # 其它字符共出现了了多少次,并输出出来 s = input('请输入一个字符串:') ## s = 'aKKKbkkkba123//?!@ ' # 测试用 count_upper = 0 count_lower = 0 count_digit = 0 count_other = 0 list_upper = [] list_lower = [] list_digit = [] list_other = [] for c in s: if c.isupper(): list_upper.append(c) count_upper += 1 elif c.islower(): count_lower += 1 list_lower.append(c) elif c.isdigit(): count_digit += 1 list_digit.append(c) else: count_other += 1 list_other.append(c) print('count_upper = '+str(count_upper),list_upper) print('count_lower = '+str(count_lower),list_lower) print('count_digit = '+str(count_digit),list_digit) print('count_other = '+str(count_other),list_other) # 14、制作趣味模板程序需求:等待⽤用户输⼊入名字、地点、爱好,根据⽤用户的名 字和爱好进⾏行行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅方⼲干xxx name = input('Name:') address = input('Address:') hobby = input('Hobby:') print(f'敬爱可亲的{name},最喜欢在{address}地⽅方⼲干{hobby}') # 15. (升级题) 给出百家姓. 然后⽤用户输⼊入⼀一个⼈人的名字. 判断这个⼈人是否是百家 姓中的姓⽒氏(升级题) # 百家姓: # first_names = """ 赵钱孙李李,周吴郑王。 冯陈褚卫,蒋沈沈韩杨。 朱秦尤许,何吕施张。 孔曹严华,⾦金金魏陶姜。 戚谢邹喻,柏⽔水窦章。 云苏潘葛,奚范彭郎。
鲁⻙韦昌⻢马,苗凤花⽅方。 俞任袁柳柳,酆鲍史唐。 费廉岑薛,雷雷贺倪汤。 滕殷罗毕,郝邬安常。 乐于时傅,⽪皮卞⻬齐康。 伍余元⼘卜,顾孟平⻩黄。 和穆萧尹,姚邵湛汪。
祁⽑毛禹狄,⽶米⻉贝明臧。 计伏成戴,谈宋茅庞。 熊纪舒屈,项祝董梁梁。 杜阮阮蓝闵,席季麻强。 贾路路娄危,江童颜郭。 梅梅盛林林***,钟徐邱骆。 ⾼高夏蔡⽥田,樊胡凌霍。
虞万⽀支柯,昝管卢莫。 经房裘缪,⼲干解应宗。 丁宣贲邓,郁单杭洪。 包诸左⽯石,崔吉钮龚。 程嵇邢滑,裴陆荣翁。 荀⽺羊於惠,甄曲家封。 芮羿储靳,汲邴糜松。 井段富巫,
乌焦巴⼸弓。 牧隗⼭山⾕谷,⻋车侯宓蓬。 全郗班仰,秋仲伊宫。 宁仇栾暴暴,⽢甘钭厉戎。 祖武符刘,景詹束⻰龙。 叶幸司韶,郜黎蓟薄。 印宿⽩白怀,蒲邰从鄂。 索咸籍赖,卓蔺屠蒙。 # # 池乔阴鬱,胥能苍双。 # 闻莘党翟,谭贡劳逄。 # 姬申扶堵,冉宰郦雍。 # 卻璩桑桂,濮⽜牛寿通。 # 边扈燕冀,郏浦尚农。 # 温别庄晏,柴瞿阎充。 # 慕连茹习,宦艾⻥鱼容。 # 向古易易慎,⼽戈廖庾终。 # 暨居衡步,都耿满弘。 # 匡国⽂文寇,⼴广禄阙东。 # 欧⽎殳沃利利,蔚越夔隆隆。 # 师巩厍聂,晁勾敖融。 # 冷訾⾟辛阚,那简饶空。 # 曾毋沙乜,养鞠须丰。 # 巢关蒯相,查后荆红。 # 游竺权逯,盖益桓公。 # 万俟司⻢马,上官欧阳。 # 夏侯诸葛,闻⼈人东⽅方。 # 赫连皇甫,尉迟公⽺羊。 # 澹台公冶,宗政濮阳。 # 淳于单于,太叔申屠。 # 公孙仲孙,轩辕令狐。 # 钟离宇⽂文,⻓长孙慕容。 # 鲜于闾丘,司徒司空。 # 丌官司寇,仉督⼦子⻋车。 # 颛孙端⽊木,巫⻢马公⻄西。 # 漆雕乐正,壤驷公良。 # 拓拓跋夹⾕谷,宰⽗父⾕谷梁梁。 # 晋楚闫法,汝鄢涂钦。 # 段⼲干百⾥里里,东郭南⻔门。 # 呼延归海海,⽺羊⾆舌微⽣生。 # 岳帅缑亢,况郈有琴。 # 梁梁丘左丘,东⻔门⻄西⻔门。 # 商牟佘佴,伯赏南宫。 # 墨墨哈谯笪,年年爱阳佟。 # 第五⾔言福,百家姓终。 # """ first_names = """ 赵钱孙李李,周吴郑王。 冯陈褚卫,蒋沈沈韩杨。 朱秦尤许,何吕施张。 孔曹严华,⾦金金魏陶姜。 戚谢邹喻,柏⽔水窦章。 云苏潘葛,奚范彭郎。 鲁⻙韦昌⻢马,苗凤花⽅方。 俞任袁柳柳,酆鲍史唐。 费廉岑薛,雷雷贺倪汤。 滕殷罗毕,郝邬安常。 乐于时傅,⽪皮卞⻬齐康。 伍余元⼘卜,顾孟平⻩黄。 和穆萧尹,姚邵湛汪。 祁⽑毛禹狄,⽶米⻉贝明臧。 计伏成戴,谈宋茅庞。 熊纪舒屈,项祝董梁梁。 杜阮阮蓝闵,席季麻强。 贾路路娄危,江童颜郭。 梅梅盛林林***,钟徐邱骆。 ⾼高夏蔡⽥田,樊胡凌霍。 虞万⽀支柯,昝管卢莫。 经房裘缪,⼲干解应宗。 丁宣贲邓,郁单杭洪。 包诸左⽯石,崔吉钮龚。 程嵇邢滑,裴陆荣翁。 荀⽺羊於惠,甄曲家封。 芮羿储靳,汲邴糜松。 井段富巫,乌焦巴⼸弓。 牧隗⼭山⾕谷,⻋车侯宓蓬。 全郗班仰,秋仲伊宫。 宁仇栾暴暴,⽢甘钭厉戎。 祖武符刘,景詹束⻰龙。 叶幸司韶,郜黎蓟薄。 印宿⽩白怀,蒲邰从鄂。 索咸籍赖,卓蔺屠蒙。 池乔阴鬱,胥能苍双。 闻莘党翟,谭贡劳逄。 姬申扶堵,冉宰郦雍。 卻璩桑桂,濮⽜牛寿通。 边扈燕冀,郏浦尚农。 温别庄晏,柴瞿阎充。 慕连茹习,宦艾⻥鱼容。 向古易易慎,⼽戈廖庾终。 暨居衡步,都耿满弘。 匡国⽂文寇,⼴广禄阙东。 欧⽎殳沃利利,蔚越夔隆隆。 师巩厍聂,晁勾敖融。 冷訾⾟辛阚,那简饶空。 曾毋沙乜,养鞠须丰。 巢关蒯相,查后荆红。 游竺权逯,盖益桓公。 万俟司⻢马,上官欧阳。 夏侯诸葛,闻⼈人东⽅方。 赫连皇甫,尉迟公⽺羊。 澹台公冶,宗政濮阳。 淳于单于,太叔申屠。 公孙仲孙,轩辕令狐。 钟离宇⽂文,⻓长孙慕容。 鲜于闾丘,司徒司空。 丌官司寇,仉督⼦子⻋车。 颛孙端⽊木,巫⻢马公⻄西。 漆雕乐正,壤驷公良。 拓拓跋夹⾕谷,宰⽗父⾕谷梁梁。 晋楚闫法,汝鄢涂钦。 段⼲干百⾥里里,东郭南⻔门。 呼延归海海,⽺羊⾆舌微⽣生。 岳帅缑亢,况郈有琴。 梁梁丘左丘,东⻔门⻄西⻔门。 商牟佘佴,伯赏南宫。 墨墨哈谯笪,年年爱阳佟。 第五⾔言福,百家姓终。 """ #这道题使用上面的字符串是没办法清楚的判断两个字的姓氏的, uname = input('Name:').strip() if uname[0] not in first_names: print('不是是百家姓中的姓氏') else: print('是百家姓中的姓氏') #升级:(下面的列表只是随意列出了几个姓氏) # 好的解决方法是把百家姓的每一个都写入列表中,遍历列表,看姓名的开头(即姓氏)是否是列表中的元素 lst = ['上官', '欧阳', '赵', '钱', '孙', '李'] for el in lst: if name.startswith(el): print('是百家姓里面的') break else: print('对不起,姓氏不在百家姓里面') # 明⽇日默写内容: # 分别⽤用while,for循环输出字符串串s = input("你想输⼊入的内容")的每⼀一个 字符。 #用while s = input('你想输入的内容:') i = 0 while i < len(s): print(s[i]) i += 1 #用for s = input('你想输入的内容:') for c in s: print(c)