day3——int,bool,str操作
1,基本数据类型
int 整数
str 字符串 一般不存放大量的数据
bool 布尔值,用来判断。 True,False
list 列表。存放大量数据,[]表示,里面可以放各种数据类型
tuple 元祖,只读列表 ()表示
dict 字典。 {key:value}
set 集合。 去重
2,int类型
bit_length() 返回一个数的二进制长度 (——有生之年用不到
3,bool类型
只有 True 和 False,一般没有什么操作
类型转换的问题:
所有的空为False,非空为True
想把某数据转换成xxx数据类型, => xxx(数据)
str > int int(str)
int > str str(int)
str > bool bool(str) 非空为True
int > bool bool(int) 非0为True
4,str类型
字符串式不可变的数据类型,不论你执行任何操作,原字符串都是不会改变的,
每次操作都会返回新字符串
索引和切片
索引下标从0开始。 [索引]是你不
切片里的第二个位置的数可以超出索引,只会给出最后一个值,不会报错
步长:第三个参数控制方向, 1 > 正向 -1 > 反方向从优往左切
6,str相关操作
大小写转换:*——记住
* upper() 全大写
title() 首字母大写(只要是不属于英文字母的都是分隔符)
切来切去:
center(10,'*') 强行用*在原字符串左右两端拼接,拼接成十个长度
* strip() 去除前后两边的空格 lstrip() rstrip()
* replace(old,new) 替换
* split() 切割(切完的结果是一个列表里面装着字符串)
注意:贴边则是有空字符串
* startswith() endswith 以什么开头
都可以进行索引的操作
* count() 计算出现的次数
* find() 查找xxx在字符串中出现的位置索引,只找第一个,找不到返回-1
* index() 查找xxx在字符串中出现的位置索引,只找第一个,找不到报错
条件判断:
.isalnum 字母数字
.isdigit 数字
.isalpha 字母
.isnumeric 中文数字大小写都可以
字符串长度:
* len() 字符串中字符的个数 (python中的内置函数)
迭代: ——for循环表示把迭代的对象中的每一个元素赋值给前面的变量
for 变量 in 可迭代对象:
循环体,也存在break和continue
else:
当循环结束的时候才会执行
day3——作业
1.有变量name = "aleX leNb" 完成如下操作:
name = "aleX leNb" 1)移除 name 变量对应的值两边的空格,并输出处理结果 s = name.strip() print(s) 2)移除name变量左边的"al"并输出处理结果 s = name.strip('al') print(s) 3)移除name变量右⾯的"Nb",并输出处理结果 s = name.strip('Nb') print(s) 4)移除name变量开头的a"与最后的"b",并输出处理结果 s = name.lstrip('a').rstrip('b') print(s) 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.count('l',0,5)) 16)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果 print(name.index('N')) 17)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果 print(name.find('N')) 18)从name变量对应的值中找到"X le"对应的索引,并输出结果 print(name.find("X le")) 19)请输出 name 变量对应的值的第 2 个字符? print(name[1]) 20)请输出 name 变量对应的值的前 3 个字符? print(name[:3]) 21)请输出 name 变量对应的值的后 2 个字符? print(name[-2:]) 22)请输出 name 变量对应的值中 "e" 所在索引位置? ① print(name.find('e')) #第一个e print(name.find('e',4,8)) #第二个e的位置 ② index= 0 for i in name: if i == 'e': print(index) index += 1
2.有字符串
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[7:100] print(s5) 6)通过对s切⽚形成字符串s6,s6 = "ba2" s6 = s[-3::-2] print(s6)
3.使⽤while和for循环分别打印字符串s="asdfer"中每个元素。
s="asdfer" ① count = 0 while count < len(s): print(s[count]) count +=1 ② 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="abcdefg" for i in s: print(i + 'sb')
6.使⽤for循环对s="321"进⾏循环,打印的内容依次是:"倒计时3秒","倒计时
2秒","倒计时1秒","出发!"。
s="321" for i in s: print('倒计时%s秒'%i) else: print('go')
7,实现⼀个整数加法计算器(两个数相加):
如:content = input("请输⼊内容:") ⽤户输⼊:5+9或5+ 9或5 + 9,然后进
⾏分割再进⾏计算。
① n = input('>>>').split('+') print(int(n[0].strip()) + int(n[1].strip())) ② content= input('>>>') num = content.split('+') s = (int(num[0].strip()) + int(num[1].strip())) print(s)
8,升级题:实现⼀个整数加法计算器(多个数相加):
如:content = input("请输⼊内容:") ⽤户输⼊:5+9+6 +12+ 13,然后进⾏
分割再进⾏计算。
content = input('>>>').strip() n = content.split('+') sum = 0 for i in n: sum += int(i) print('终极运算之最后结果:%s'%sum)
9,计算⽤户输⼊的内容中有⼏个整数(以个位数为单位)。
如:content = input("请输⼊内容:") # 如fhdal234slfh98769fjdla
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选项。
flag = True while flag: choice = input('请输入你的选择\nA/a\nB/b\nC/c').strip() if choice.upper() == 'A': print('走大路回家') while flag: a = input('请输入序号:\n1:公交车\n2:步行').strip() if a == '1': print('10分钟到家') flag = False elif a == '2': print('20分钟到家') flag = False else: print('没有这个选项,请重新选择回家方式') continue elif choice.upper() == 'B': print('走小路回家') flag = False elif choice.upper() == 'C': print('绕道回家') while flag: c = input('请输入序号选择:\n1,游戏厅\n2,网吧').strip() if c == '1': print('⼀个半⼩时到家,爸爸在家,拿棍等你') break elif c == '2': print('两个⼩时到家,妈妈已做好了战⽃准备') break else: print('没有这个选项,请重新选择回家方式') continue else: print('请输入正确的选项')
11、写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
① count = 1 sum = 0 while count <100: if count % 2 == 0: sum -= count if count == 88: sum += 88 else: sum += count count += 1 print(sum) ② count = 1 sum = 0 while count <100: if count % 2 == 0: if count == 88: count +=1 #如果不自加1,count一直是88,跳不出去循环 continue sum -= count else: sum += count count += 1 print(sum)
12. (升级题)判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海
⾃来⽔来⾃海上(升级题)
① content = input('请输入>>>:') if content[::-1] == content: print('是回文') else: print('宝元是元宝') ② s = input('>>>') i = 0 n = len(s) - 1 while n > 0: if s[i] == s[n]: i += 1 n -= 1 else: print('这不是回文') break else: print('这就是回文')
13. 输⼊⼀个字符串,要求判断在这个字符串中⼤写字⺟,⼩写字⺟,数字,
其它字符共出现了多少次,并输出出来
content = input('请输入>>>').strip() upper = 0 lower = 0 num = 0 other = 0 for i in content: if i.isupper(): upper +=1 elif i.islower(): lower +=1 elif i.isdigit(): num +=1 else: other += 1 print("大写字母有{}个,小写字母有{}个,数字有{}个,其他有{}个".format(upper,lower,num,other))
14、制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名
字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
name = input('请输入名字:') place = input('请输入地点:') hobby = input('请输入爱好:') print('敬爱可亲{},最喜欢在{}疯狂的对{}输出'.format(name,place,hobby))
15. (升级题) 给出百家姓. 然后⽤户输⼊⼀个⼈的名字. 判断这个⼈是否是百家
姓中的姓⽒(升级题)
百家姓: first_names = """ 赵钱孙李,周吴郑王。 冯陈褚卫,蒋沈韩杨。 朱秦尤许,何吕施张。 孔曹严华,⾦魏陶姜。 戚谢邹喻,柏⽔窦章。 云苏潘葛,奚范彭郎。 鲁⻙昌⻢,苗凤花⽅。 俞任袁柳,酆鲍史唐。 费廉岑薛,雷贺倪汤。 滕殷罗毕,郝邬安常。 乐于时傅,⽪卞⻬康。 伍余元⼘,顾孟平⻩。 和穆萧尹,姚邵湛汪。 祁⽑禹狄,⽶⻉明臧。 计伏成戴,谈宋茅庞。 熊纪舒屈,项祝董梁。 杜阮蓝闵,席季麻强。 贾路娄危,江童颜郭。 梅盛林***,钟徐邱骆。 ⾼夏蔡⽥,樊胡凌霍。 虞万⽀柯,昝管卢莫。 经房裘缪,⼲解应宗。 丁宣贲邓,郁单杭洪。 包诸左⽯,崔吉钮龚。 程嵇邢滑,裴陆荣翁。 荀⽺於惠,甄曲家封。 芮羿储靳,汲邴糜松。 井段富巫,乌焦巴⼸。 牧隗⼭⾕,⻋侯宓蓬。 全郗班仰,秋仲伊宫。 宁仇栾暴,⽢钭厉戎。 祖武符刘,景詹束⻰。 叶幸司韶,郜黎蓟薄。 印宿⽩怀,蒲邰从鄂。 索咸籍赖,卓蔺屠蒙。 池乔阴鬱,胥能苍双。 闻莘党翟,谭贡劳逄。 姬申扶堵,冉宰郦雍。 卻璩桑桂,濮⽜寿通。 边扈燕冀,郏浦尚农。 温别庄晏,柴瞿阎充。 慕连茹习,宦艾⻥容。 向古易慎,⼽廖庾终。 暨居衡步,都耿满弘。 匡国⽂寇,⼴禄阙东。 欧⽎沃利,蔚越夔隆。 师巩厍聂,晁勾敖融。 冷訾⾟阚,那简饶空。 曾毋沙乜,养鞠须丰。 巢关蒯相,查后荆红。 游竺权逯,盖益桓公。 万俟司⻢,上官欧阳。 夏侯诸葛,闻⼈东⽅。 赫连皇甫,尉迟公⽺。 澹台公冶,宗政濮阳。 淳于单于,太叔申屠。 公孙仲孙,轩辕令狐。 钟离宇⽂,⻓孙慕容。 鲜于闾丘,司徒司空。 丌官司寇,仉督⼦⻋。 颛孙端⽊,巫⻢公⻄。 漆雕乐正,壤驷公良。 拓跋夹⾕,宰⽗⾕梁。 晋楚闫法,汝鄢涂钦。 段⼲百⾥,东郭南⻔。 呼延归海,⽺⾆微⽣。 岳帅缑亢,况郈有琴。 梁丘左丘,东⻔⻄⻔。 商牟佘佴,伯赏南宫。 墨哈谯笪,年爱阳佟。 第五⾔福,百家姓终。 """
name=input("请输入一个名字:").strip() name1=name[0] if name1 in first_names: print("good") else: print("这个名字姓氏不在百家姓中!")