1
今日作业
1.有变量name = "aleX leNb" 完成如下操作:
# 1)移除 name 变量对应的值两边的空格,并输出处理结果 '''''' ''' # name = " aleX leNb" # print(name) # print(name.strip()) ''' # 2)移除name变量左边的"al"并输出处理结果 ''' # name = "aleX leNb" # print(name.replace("al","")) ''' ''' name = "aleX leNb" s1=name.strip("al") print(s1) ''' ''' name = "aleX leNb" s1=name.lstrip('al') print(s1) ''' # 3)移除name变量右⾯的"Nb",并输出处理结果 ''' name = "aleX leNb" print(name.replace("Nb","")) ''' ''' name = "aleX leNb" s1=name.strip("Nb") print(s1) ''' ''' name = "aleX leNb" s1=name.rstrip('Nb') print(s1) ''' # 4)移除name变量开头的a"与最后的"b",并输出处理结果 #strip ''' name = "aleX leNb" name=name.replace('a','') name=name.replace('b','') print(name) ''' # 5)判断 name 变量是否以 "al" 开头,并输出结果 ''' name = "aleX leNb" s=name.startswith('al') print(s) #True ''' # 6)判断name变量是否以"Nb"结尾,并输出结果 ''' name = "aleX leNb" s=name.endswith('Nb') print(s) #True ''' # 7)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果 ''' name = "aleX leNb" s=name.replace("l",'p') print(s) ''' # 8)将name变量对应的值中的第⼀个"l"替换成"p",并输出结果 ''' name = "aleX leNb" s=name.replace("l",'p',1) print(s) ''' # 9)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。 ''' name = "aleX leNb" s=name.split('l') print(s) ''' # 10)将name变量对应的值根据第⼀个"l"分割,并输出结果。 ''' name = "aleX leNb" s=name.split('l',1) print(s) ''' # 11)将 name 变量对应的值变⼤写,并输出结果 ''' name = "aleX leNb" s=name.upper() print(s) ''' # 12)将 name 变量对应的值变⼩写,并输出结果 ''' name = "aleX leNb" s=name.lower() print(s) ''' # 13)将name变量对应的值⾸字⺟"a"⼤写,并输出结果 ''' name = "aleX leNb" s=name.title() print(s) ''' # 14)判断name变量对应的值字⺟"l"出现⼏次,并输出结果 ''' name = "aleX leNb" s=name.count('l') print(s) ''' # 15)如果判断name变量对应的值前四位"l"出现⼏次,并输出结果 ''' ??? name = "aleX leNb" s=name.count('l',4) print(s) ''' ''' # name = "aleX leNb" # s=name.count('l',0,4) #区间寻找,从字符串的0-4寻找 # print(s) ''' ''' name = "aleX leNb" s=name[0:4].count('l') #从第1个开始到第4个,切片处理 print(s) ''' ''' name = "aleX leNb" s=name[0:4].count('l') #从第1个开始到第4个,切片处理 print(s) ''' # 16)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果 ''' name = "aleX leNb" s=name.index("N") print(s) ''' # name = "aleX leNb" # s=name.index("N") # print(s) #结果:7 # 17)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果 ''' name = "aleX leNb" s=name.find("N") print(s) #结果: ''' # 18)从name变量对应的值中找到"X le"对应的索引,并输出结果 ''' name = "aleX leNb" s=name.index('X le') print(s) ''' # 19)请输出 name 变量对应的值的第 2 个字符? #这句话有歧义:可以是第二个字符,也可以是索引为2 ''' # name = "aleX leNb" # s=name[1] # print(s) #l # name = "aleX leNb" # s=name[2] # print(s) ''' # 20)请输出 name 变量对应的值的前 3 个字符? # name = "aleX leNb" # s=name[0:3] # print(s) # 21)请输出 name 变量对应的值的后 2 个字符? # name = "aleX leNb" # s=name[-2:] # print(s) # 22)请输出 name 变量对应的值中 "e" 所在索引位置? #22) ''' name = "aleX leNb" s=name.index('e') print(s) # s1=s+1+name[3:].index('e') s1=s+1+name[3:].index('e') print(s1) ''' """ 老师讲解 while循环//for循环差不多是放弃索引 ame = "aleX leNb" i=0 while i<len(name): if name[i]=='e': print(i) i+=1 """ # name = "aleX leNb" # print(name.find('e'),name.find('e',3))
2.有字符串s = "123a4b5c"
# 1)通过对s切⽚形成新的字符串s1,s1 = "123" ''' s = "123a4b5c" s1=s[0:3] #或者#s1=s[:3] print(s1) ''' # 2)通过对s切⽚形成新的字符串s2,s2 = "a4b" ''' s = "123a4b5c" s2=s[3:6] print(s2) ''' # 3)通过对s切⽚形成新的字符串s3,s3 = "1345" ''' s = "123a4b5c" s3=s[::2] print(s3) ''' # 4)通过对s切⽚形成字符串s4,s4 = "2ab" ''' # s = "123a4b5c" # s3=s[1:-1:2] #s3=s[1:6:2] # print(s3) ''' # 5)通过对s切⽚形成字符串s5,s5 = "c" ''' # s = "123a4b5c" # s5=s[-1] # print(s5) ''' # 6)通过对s切⽚形成字符串s6,s6 = "ba2" ''' s = "123a4b5c" s5=s[-3:0:-2] print(s5) ''' ''' s = "123a4b5c" s5=s[-3::-2] print(s5) '''
3.使⽤while和for循环分别打印字符串s="asdfer"中每个元素。
''' print(s[0]) ''' ''' s="asdfer" for i in s: #i是个变量,随便起都行 print(i) ''' ''' s="asdfer" count=0 while count<len(s): print(s[count]) count+=1 ''' ''' s='abcdef' i=0 while i<len(s): print(s[i]) i+=1 ''' ''' ''' ''' s='abcdef' for i in s: print(i) '''
4.使⽤for循环对s="asdfer"进⾏循环,但是每次打印的内容都是"asdfer"。
''' s="asdfer" for i in s: print(s) '''
5.使⽤for循环对s="abcdefg"进⾏循环,每次打印的内容是每个字符加上sb,# 例如:asb, bsb,csb,...gsb。
''' 方法一 s="asdfer" for i in s: print(i+'sb') ''' ''' 方法二 s="asdfer" count=0 while count<len(s): print(s[count]+'ab') count+=1 '''
6.使⽤for循环对s="321"进⾏循环,打印的内容依次是:"倒计时3秒","倒计时
2秒","倒计时1秒","出发!"。
''' s="321" for i in s: print("倒计时%s秒"%(i)) print(f"倒计时{c}秒") #格式化输出 print('出发!') ''' """ #for循环+else s="321" for i in s: print("倒计时%s秒"%(i)) print(f"倒计时{c}秒") else: #当for中的循环结束之后自动执行else,break不会触发else的执行 print('出发!') """ ''' while 1: break #直接出来,不会管else else: print('出发') ''' ''' while False: break #直接出来,不会管else else: print('出发') #结果 :出发 '''
7,实现⼀个整数加法计算器(两个数相加):
如:content = input("请输⼊内容:") ⽤户输⼊:5+9或5+ 9或5 + 9,然后进
⾏分割再进⾏计算。
''' content = input("请输⼊内容:") count=content.split('+') sum=0 # print(count) for i in count: sum=sum+int(i) print(sum) ''' ''' #老师讲解 ''' ''' content = input("请输⼊内容:") #⽤户输⼊:5+9 #字符串切割 lst=content.split('+') #获取到两个数 a=lst[0] b=lst[1] print(int(a)+int(b)) '''
8,升级题:实现⼀个整数加法计算器(多个数相加):
如:content = input("请输⼊内容:") ⽤户输⼊:5+9+6 +12+ 13,然后进⾏
分割再进⾏计算。
''' # content = input("请输⼊内容:") # count=content.split('+') # sum=0 # # print(count) # for i in count: # sum=sum+int(i) # print(sum) ''' ''' #老师讲解,这个题目在这里有点超前 #自动去空格,int可以帮助把字符串里的空格去掉 #int,用的是strip(),只能去除两边的空格,中间的空格去不掉 #strip(),括号里边可以加上去掉的内容 content = input("请输⼊内容:") lst=content.split('+') sum=0 for el in lst: #可以使用for循环遍历列表 sum+=int(el) print(sum) '''
''' content = input("请输⼊内容:").replace(" ","") #空格全部替换成空 lst=content.split('+') sum=0 for el in lst: #可以使用for循环遍历列表 sum+=int(el) print(sum) ''' #这个题难点在于,当前还没有学到这块知识 #没法解释负号问题 """ # re #eval解决方案 """
9,计算⽤户输⼊的内容中有⼏个整数(以个位数为单位)。
如:content = input("请输⼊内容:") # 如fhdal234slfh98769fjdla
''' content = input("请输⼊内容:") count=0 for i in content: if i.isdigit(): count+=1 print(count) ''' #c.isnumeric(),判断的范围更广 # content = input("请输⼊内容:") # count=0 # for i in content: # if i.isdigit(): # count+=1 # print(count)
10、写代码,完成下列需求:
⽤户可持续输⼊(⽤while循环),⽤户使⽤的情况:
输⼊A,则显示⾛⼤路回家,然后在让⽤户进⼀步选择:
是选择公交⻋,还是步⾏?
选择公交⻋,显示10分钟到家,并退出整个程序。
选择步⾏,显示20分钟到家,并退出整个程序。
输⼊B,则显示⾛⼩路回家,并退出整个程序。
输⼊C,则显示绕道回家,然后在让⽤户进⼀步选择:
是选择游戏厅玩会,还是⽹吧?
选择游戏厅,则显示 ‘⼀个半⼩时到家,爸爸在家,拿棍等你。’并让其
重新输⼊A,B,C选项。
选择⽹吧,则显示‘两个⼩时到家,妈妈已做好了战⽃准备。’并让其重
新输⼊A,B,C选项。
#这个题目就是练代码 '''##字体转换成百家姓之后,编码发生了改变,所以尽量自己敲这些字 while 1: s=input("请输入ABCD进行选择回家方式:") if s=='A': k=input('选择公交⻋,还是步⾏') print(k) if k == '公交车': print('10分钟到家') break elif k=='步行': print('20分钟到家') break elif s=='B': print('走小路回家') break elif s=='C': print('绕道回家') k = input('选择游戏厅,还是⽹吧') if k=='游戏厅': print('⼀个半⼩时到家,爸爸在家,拿棍等你') else: print('两个⼩时到家,妈妈已做好了战⽃准备。') ''' """#老师讲解 """ ''' while 1: content=input('请输入ABC:').upper() if content=='A': print('走大路回家') tra=input('请选择公交车还是不行') if tra=="公交车": print("10分钟到家") else: print("20分钟到家") break # pass #过 保证语法正确,先占着 elif content=='B': print('走小路回家') break elif content=='C': print('绕道回家') play=input('去游戏厅还是网吧?') if play=='游戏厅': print("1个半小时回家,,爸爸在家,拿棍等你") else: print('两个⼩时到家,妈妈已做好了战⽃准备。') # pass #量大,但是逻辑性不强 '''
11.写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
# sum=0 # for i in range(1,100): # if i==88: # i=89 # # continue # if i%2==1: # sum+=i # elif i%2==0: # sum-=i # print(sum) ''' count = 1 sum = 0 while count < 100: if count == 88: count = count + 1 continue if count %2 == 0:# 偶数 sum = sum - count else: sum = sum + count count = count + 1 print(sum) '''
12. (升级题)判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海
⾃来⽔来⾃海上(升级题)
# s=input("请输入一句话:") # s1=s[::-1] # if s==s1: # print('回文') # else: # print("不是回文")
13. 输⼊⼀个字符串,要求判断在这个字符串中⼤写字⺟,⼩写字⺟,数字,其它字符共出现了多少次,并输出出来
''' s=input("请输⼊⼀个字符串:") digit_l=0 upper_l=0 lower_l=0 other_1=0 for i in s: if i.isdigit(): digit_l+=1 elif i.islower(): lower_l+=1 elif i.isupper(): upper_l+=1 else: other_1+=1 print(digit_l,lower_l,upper_l,other_1) '''
14、制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名
字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
'''#三种格式化方式 name=input("请输入名字:") place=input("请输入地点:") love=input("请输入爱好:") print("敬爱可亲的%s,最喜欢在%s地⽅⼲%s"%(name,place,love)) print("敬爱可亲的{0},最喜欢在{1}地⽅⼲{2}".format(name,place,love)) print(f"敬爱可亲的{name},最喜欢在{place}地⽅⼲{love}") '''
15.(升级题) 给出百家姓. 然后⽤户输⼊⼀个⼈的名字. 判断这个⼈是否是百家
姓中的姓⽒(升级题)
百家姓:
目前只能做一个low版本的,但是逻辑是有问题的

first_names = """ 赵钱孙李,周吴郑王。 冯陈褚卫,蒋沈韩杨。 朱秦尤许,何吕施张。 孔曹严华,⾦魏陶姜。 戚谢邹喻,柏⽔窦章。 云苏潘葛,奚范彭郎。 鲁⻙昌⻢,苗凤花⽅。 俞任袁柳,酆鲍史唐。 费廉岑薛,雷贺倪汤。 滕殷罗毕,郝邬安常。 乐于时傅,⽪卞⻬康。 伍余元⼘,顾孟平⻩。 和穆萧尹,姚邵湛汪。 祁⽑禹狄,⽶⻉明臧。 计伏成戴,谈宋茅庞。 熊纪舒屈,项祝董梁。 杜阮蓝闵,席季麻强。 贾路娄危,江童颜郭。 梅盛林刁,钟徐邱骆。 ⾼夏蔡⽥,樊胡凌霍。 虞万⽀柯,昝管卢莫。 经房裘缪,⼲解应宗。 丁宣贲邓,郁单杭洪。 包诸左⽯,崔吉钮龚。 程嵇邢滑,裴陆荣翁。 荀⽺於惠,甄曲家封。 芮羿储靳,汲邴糜松。 井段富巫,乌焦巴⼸。 牧隗⼭⾕,⻋侯宓蓬。 全郗班仰,秋仲伊宫。 宁仇栾暴,⽢钭厉戎。 祖武符刘,景詹束⻰。 叶幸司韶,郜黎蓟薄。 印宿⽩怀,蒲邰从鄂。 索咸籍赖,卓蔺屠蒙。 池乔阴鬱,胥能苍双。 闻莘党翟,谭贡劳逄。 姬申扶堵,冉宰郦雍。 卻璩桑桂,濮⽜寿通。 边扈燕冀,郏浦尚农。 温别庄晏,柴瞿阎充。 慕连茹习,宦艾⻥容。 向古易慎,⼽廖庾终。 暨居衡步,都耿满弘。 匡国⽂寇,⼴禄阙东。 欧⽎沃利,蔚越夔隆。 师巩厍聂,晁勾敖融。 冷訾⾟阚,那简饶空。 曾毋沙乜,养鞠须丰。 巢关蒯相,查后荆红。 游竺权逯,盖益桓公。 万俟司⻢,上官欧阳。 夏侯诸葛,闻⼈东⽅。 赫连皇甫,尉迟公⽺。 澹台公冶,宗政濮阳。 淳于单于,太叔申屠。 公孙仲孙,轩辕令狐。 钟离宇⽂,⻓孙慕容。 鲜于闾丘,司徒司空。 丌官司寇,仉督⼦⻋。 颛孙端⽊,巫⻢公⻄。 漆雕乐正,壤驷公良。 拓跋夹⾕,宰⽗⾕梁。 晋楚闫法,汝鄢涂钦。 段⼲百⾥,东郭南⻔。 呼延归海,⽺⾆微⽣。 岳帅缑亢,况郈有琴。 梁丘左丘,东⻔⻄⻔。 商牟佘佴,伯赏南宫。 墨哈谯笪,年爱阳佟。 第五⾔福,百家姓终。 """
# name=input("请输入一个名字:").strip() # name1=name[0]#这里只能查找单姓 # if name1 in first_names: # print("good,在百家姓内") # else: # print("这个名字姓氏不在百家姓中!") ''' # 这个题目是有问题的 #欧阳娜娜 #顺序: {欧,欧阳,欧阳娜,欧阳娜娜} ''' ''' #扩展 lst=["上官",'欧阳','赵','钱','孙'] name=input('请输入你的名字') #欧阳南妮 for el in lst: #el是姓 if name.startswith(el): print('在百家姓里面的') break else: print("对不起,姓氏不在百家姓里") '''
练手题:
分别⽤while,for循环输出字符串s = input("你想输⼊的内容")的每⼀个字符