day 03 字符串
课后作业
1.有变量name = "aleX leNb" 完成如下操作:
1)移除 name 变量对应的值两边的空格,并输出处理结果
name = "aleX leNb"
s1 = name.strip() #去掉左右两端的空格
print(s1)
2)移除name变量左边的"al"并输出处理结果
s2 = name.split("al")
print(s2)
3)移除name变量右⾯的"Nb",并输出处理结果
s3 = name.split("Nb")
print(s3)
4)移除name变量开头的a"与最后的"b",并输出处理结果
s4 = name.lstrip("a").rstrip("b")
print(s4)
5)判断 name 变量是否以 "al" 开头,并输出结果
s5 = name.startswith("al")
print(s5)
6)判断name变量是否以"Nb"结尾,并输出结果
s6 = name.endswith("Nb")
print(s6)
7)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
s7 = name.replace("l","p")
print(s7)
8)将name变量对应的值中的第⼀个"l"替换成"p",并输出结果
s8 = name.replace("l","p",1)
print(s8)
9)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
s9 = name.split("l")
print(s9)
10)将name变量对应的值根据第⼀个"l"分割,并输出结果。
s10 = name.split("l",1)
print(s10)
11)将 name 变量对应的值变⼤写,并输出结果
s11 = name.upper()
print(s11)
12)将 name 变量对应的值变⼩写,并输出结果
s12 = name.lower()
print(s12)
13)将name变量对应的值⾸字⺟"a"⼤写,并输出结果
s13 = name.capitalize()
print(s13)
14)判断name变量对应的值字⺟"l"出现⼏次,并输出结果
s14 = name.count("l")
print(s14)
15)如果判断name变量对应的值前四位"l"出现⼏次,并输出结果
s15 = name.count("l",0,5)
print(s15)
16)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
s16 = name.index("N")
print(s16)
17)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
s17 = name.find("N")
print(s17)
18)从name变量对应的值中找到"X le"对应的索引,并输出结果
s18 = name.index("X le")
print(s18)
19)请输出 name 变量对应的值的第 2 个字符?
print(name[1])
20)请输出 name 变量对应的值的前 3 个字符?
print(name[0:3])
21)请输出 name 变量对应的值的后 2 个字符?
print(name[-3:-1])
22)请输出 name 变量对应的值中 "e" 所在索引位置?
print(name.find("e"))
2.有字符串s = "123a4b5c"
1)通过对s切片形成新的字符串s1,s1 = "123"
s1 = s
print(s1[0:3])
2)通过对s切片形成新的字符串s2,s2 = "a4b"
s2 = s
print(s2[3:6])
3)通过对s切片形成新的字符串s3,s3 = "1345"
s3 = s
print(s3[::2])
4)通过对s切片形成字符串s4,s4 = "2ab"
s4 = s
print(s4[1:6:2])
5)通过对s切片形成字符串s5,s5 = "c"
s5 = s
print(s5[7:8])
6)通过对s切片形成字符串s6,s6 = "ba2"
s6 = s
print(s6[-3::-2])
3.使用while和for循环分别打印字符串s="asdfer"中每个元素。
s="asdfasf" i = 0 while i < len(s): print(s[i]) i += 1 for 曹宝宝 in s: print(曹宝宝)
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(f"倒计时{c}秒") else: # 当for中的循环结束之后自动执行else. break不会触发else的执行 print("出发")
7,实现一个整数加法计算器(两个数相加):
如: content = input("请输⼊内容:") 用户输⼊: 5+9或5+ 9或5 + 9,然后进
行分割再进行计算
content = input("请输入内容:").replace(" ", "") # 5+9+16+32+64 ["5", "9"] # 字符串切割 lst = content.split("+") # ["5", "9", "16", "32",....] # 获取到两个数 a = lst[0] b = lst[1] print(int(a) + int(b))
8,升级题:实现一个整数加法计算器(多个数相加):
如: content = input("请输⼊内容:") 用户输入: 5+9+6 +12+ 13,然后进行
分割再进行计算。
content = input("请输入内容:").replace(" ", "") # 5+9+16+32+64 ["5", "9"] # 字符串切割 lst = content.split("+") # ["5", "9", "16", "32",....] # 获取到两个数 a = lst[0] b = lst[1] print(int(a) + int(b)) # # # # 多个数 s = "娃哈哈" sum = 0 for el in lst: # 可以使用for循环遍历列表 sum += int(el) # 累加 print(sum)
9,计算用户输入的内容中有几个整数(以个位数为单位)。
如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla
content = input("请输⼊内容:") count = 0 for c in content: if c.isdigit(): count += 1 print(count)
10、写代码,完成下列需求:
⽤户可持续输⼊(⽤while循环),⽤户使⽤的情况:
输⼊A,则显示⾛⼤路回家,然后在让⽤户进⼀步选择:
是选择公交⻋,还是步⾏?
选择公交⻋,显示10分钟到家,并退出整个程序。
选择步⾏,显示20分钟到家,并退出整个程序。
输⼊B,则显示⾛⼩路回家,并退出整个程序。
输⼊C,则显示绕道回家,然后在让⽤户进⼀步选择:
是选择游戏厅玩会,还是⽹吧?
选择游戏厅,则显示 ‘⼀个半⼩时到家,爸爸在家,拿棍等你。’并让其
重新输⼊A,B,C选项。
选择⽹吧,则显示‘两个⼩时到家,妈妈已做好了战⽃准备。’并让其重
新输⼊A,B,C选项。
while 1: content = input("请输入ABC:") if content.upper() == "A": print("走大路回家") tra = input("请选择公交车还是步行 ") if tra == "公交车": print("10分钟到家") else: print("20分钟到家") break elif content.upper() == "B": print("走小路回家") break elif content.upper() == "C": print("绕道回家") play = input("去游戏厅还是网吧?") if play == "游戏厅": print("⼀个半⼩时到家,爸爸在家,拿棍等你。") else: print("两个⼩时到家,妈妈已做好了战⽃准备。") else: print("输入错误. ")
11、写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
i = 1 sum = 0 while i < 100: if i%2 == 1: sum += i else: if i ==88: sum = sum else: sum -= i i += 1 print(sum)
12. (升级题)判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海
⾃来⽔来⾃海上(升级题)
content=input('请输入') if content[::-1] == content: print('是回文') else: print('元宝是元宝')
13. 输⼊⼀个字符串,要求判断在这个字符串中⼤写字⺟,⼩写字⺟,数字,
其它字符共出现了多少次,并输出出来
content = input("请输入一句话") daxie = 0 xiaoxie = 0 shuzi = 0 qita = 0 for c in content: if c.isupper(): daxie += 1 elif c.islower(): xiaoxie += 1 elif c.isdigit(): shuzi += 1 else: qita += 1 print(daxie) print(xiaoxie) print(shuzi) print(qita)
14、制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名
字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
name = input("名字:") address = input("地点:") hobby = input("爱好:") print(f"敬爱可亲的{name},最喜欢在{address}地⽅⼲{hobby}")
15. (升级题) 给出百家姓. 然后⽤户输⼊⼀个⼈的名字. 判断这个⼈是否是百家
姓中的姓⽒(升级题)
百家姓:
first_names = """
赵钱孙李,周吴郑王。
冯陈褚卫,蒋沈韩杨。
朱秦尤许,何吕施张。
孔曹严华,⾦魏陶姜。
戚谢邹喻,柏⽔窦章。
云苏潘葛,奚范彭郎。
鲁⻙昌⻢,苗凤花⽅。
俞任袁柳,酆鲍史唐。
费廉岑薛,雷贺倪汤。
滕殷罗毕,郝邬安常。
乐于时傅,⽪卞⻬康。
伍余元⼘,顾孟平⻩。
和穆萧尹,姚邵湛汪。
祁⽑禹狄,⽶⻉明臧。
计伏成戴,谈宋茅庞。
熊纪舒屈,项祝董梁。
杜阮蓝闵,席季麻强。
贾路娄危,江童颜郭。
梅盛林***,钟徐邱骆。
⾼夏蔡⽥,樊胡凌霍。
虞万⽀柯,昝管卢莫。
经房裘缪,⼲解应宗。
丁宣贲邓,郁单杭洪。
包诸左⽯,崔吉钮龚。
程嵇邢滑,裴陆荣翁。
荀⽺於惠,甄曲家封。
芮羿储靳,汲邴糜松。
井段富巫,乌焦巴⼸。
牧隗⼭⾕,⻋侯宓蓬。
全郗班仰,秋仲伊宫。
宁仇栾暴,⽢钭厉戎。
祖武符刘,景詹束⻰。
叶幸司韶,郜黎蓟薄。
印宿⽩怀,蒲邰从鄂。
索咸籍赖,卓蔺屠蒙。
lst = ["上官", "欧阳", "赵", "钱", "孙"] name = input("请输入你的名字") # 欧阳南你 for el in lst: # el 姓 if name.startswith(el): # 判断开头 print("百家姓里面的") break else: print("对不起, 姓氏不在百家姓里")