python第二天
基本数据和结构
数字
1.整数 (int)
32位电脑-2**31~2**31-1
64位电脑-2**63~2**63-1
2.长整型(long)
在python3中没有长短整数之分
3.浮点数(float)
用来处理带小数点的数字,类似c的double类型,占8个字符 (64位),其中52表示底,11位表示指数,剩下一位是符号。
布尔值
真和假
1或0
True或False
字符串
'hello word'
bytes类型
1 msg = "转换为bytes" 2 print(msg) 3 print(msg.encode(encoding="utf-8")) 4 print(msg.encode(encoding="utf-8").decode(encoding="utf-8")) #默认encoding默认为utf-8
列表
1 2 import copy 3 4 names = ["张三","李四","王五","赵六",["郝","陈"]] 5 6 print(names[1:3]) 7 print(names[-1]) 8 print(names[-3:-1]) 9 print(names[-3:]) #0可以省略 10 print(names[0:-1:2])#步长切片 11 12 #增 13 names.append("李星") 14 print(names) 15 names.insert(1,"胖子") #位置,内容 16 print(names) 17 18 #删 19 names.remove("张三") 20 print(names) 21 del names[1] 22 print(names) 23 names.pop(2)#没有参数默认删除最后一个 24 print(names) 25 26 #查 27 print(names.index("王五")) 28 29 #统计 30 print(names.count("李星")) 31 32 #删除列表 33 #names.clear() 34 35 #反转 36 names.reverse() 37 print(names) 38 39 #排序 40 names.sort() 41 print(names) 42 43 #合并 44 names2 = [1,2,3,4] 45 46 names.extend(names2) 47 print(names) 48 49 50 51 #复制 52 name2 = names.copy()#浅copy 与name2 = copy.copy(names)和name2 = names[:]一样 53 name3 = copy.deepcopy(names)#深copy 54 print(names) 55 print(name2) 56 print(name3) 57 names[1]="李" 58 names[-1][0]="板云" 59 print(names) 60 print(name2) 61 print(name3) 62 63 64 #列表循环 65 for i in names: 66 print(i)
元组
1 names = ('张三','李四') 2 #元组不能更改只可以读操作
练习购物车
1 commodity =[['小米5',1999],['樱桃机械键盘',800],['罗技鼠标',399],['1080gtx',5000]] 2 Shopping_Cart = [] 3 Shopping_Cart.append(input("你的姓名:")) 4 Shopping_Cart.append(int(input("你的预算:"))) 5 print(Shopping_Cart) 6 ''' 7 for i in range(0,len(commodity)): 8 print(i+1,commodity[i]) 9 ''' 10 for index,item in enumerate(commodity): 11 print(index+1,item) 12 while True: 13 j=input("购买商品的编号:") 14 if j.isdigit(): #isdigit判断是否为整数 15 j = int(j) 16 if j < len(commodity): 17 if Shopping_Cart[1] >= commodity[j - 1][1]: 18 Shopping_Cart[1] = Shopping_Cart[1] - commodity[j - 1][1] 19 Shopping_Cart.append(commodity[j - 1]) 20 print("购买成功") 21 else: 22 print("余额不足!") 23 else: 24 print("\033[41;1m看清楚!再输入可以吗?\033[0m") 25 else: 26 print('%s 的清单,余额:\033[31;1m%s\033[0m' %(Shopping_Cart[0],Shopping_Cart[1])) 27 print(Shopping_Cart[2:]) 28 exit() 29 ''' 30 if j =="end": 31 print(Shopping_Cart[0],'的清单,余额:',Shopping_Cart[1]) 32 print(Shopping_Cart[2:]) 33 exit() 34 else: 35 j=int(j) 36 if Shopping_Cart[1]>=commodity[j-1][1]: 37 Shopping_Cart[1]=Shopping_Cart[1]-commodity[j-1][1] 38 Shopping_Cart.append(commodity[j-1]) 39 print("购买成功") 40 else: 41 print("余额不足!") 42 '''
字符串常见操作
1 name = "my name is {name} and i am {year}" 2 3 print(name.capitalize()) #首字母大写 4 print(name.count("e"))#统计字符的数量 5 print(name.center(40,"-"))#总长度,补全的字符 6 print(name.endswith("ss"))#判断以什么结尾 7 print(name.find("boss"))#查找字符位置 8 print(name.rfind('i'))#找最右的字符 9 print(name[name.find("the"):])#字符串的切片 10 print(name.format(name='lihaitao',year=18)) 11 print(name.index("is")) #查找 12 print('dsa232'.isalnum())#是否只包含数字和英文字符 13 print('dsa232'.isalpha())#是否只英文字符 14 print('A232'.isalnum())#是否为十进制 15 print('A232'.isdigit())#是否为整数 16 print('A232'.isidentifier())#判断是否为合法的变量名 17 print('A232'.isnumeric())#与isdigit()一样 18 print(' '.isspace())#是否为一个空格 19 print('My Name Is'.istitle())#首字母是否都为大写 20 print('My Name Is'.isupper())#是否全为大写 21 print(','.join(['1','2','3','4'])) 22 print(name.ljust(50,'*'))#长度,补全 23 print(name.rjust(50,'*')) 24 print('Lihaitao'.lower()) 25 print('Lihaitao'.upper()) 26 print('\nLihaitao'.strip())#去掉回车和空格,rstrip右边,lstrip左侧 27 28 p = str.maketrans('abcdef$','1234567') 29 print('$avbdsdcz'.translate(p))#类似加密的一个替换 30 31 print('lihaitao'.replace('a','A',1))#替换和替换的数量 32 print('1+2+3+4'.split('+'))#提取 33 print('1+2\n3+4'.splitlines())#以换行提取 34 print('Lihaitao'.swapcase())#大小写互换 35 print('Lihai tao'.title())#每个单词首字母大写
字典
1 info = { 2 'stu1101':"TenLan Wu", 3 'stu1102':"LongZe Luola", 4 'stu1103':"XiaoZe Maliya" 5 } 6 #查找 7 print(info) 8 print(info['stu1101'])#当不存在是会报错 9 print(info.get('stu1104'))#不会报错,不存在是返回None 10 print('stu1104' in info)#判断是否存在,存在输出不存在则不输出 11 12 #修改 13 info['stu1101'] = '武藤兰' 14 print(info['stu1101']) 15 16 #添加 17 info['stu1104'] = 'CangJingKong' 18 print(info) 19 20 #删除 21 info.pop('stu1102') 22 del info['stu1101'] 23 #info.popitem()#随机删除 24 print(info) 25 26 #合并 27 b = { 28 'stu1103':'BoDuo YeJiYi', 29 'syu1108':'Tian HaiYi' 30 } 31 info.update(b) #没有的合并,重复的覆盖 32 print(info) 33 34 #字典转成列表 35 print(info.items()) 36 37 #初始化字典 38 c = dict.fromkeys([6,7,8],[1,{'name':'xxxx'},4444]) 39 print(c) 40 c[7][1]['name'] = '低配周杰伦' #类似浅复制的问题,只有在一层的情况下才能用fromkeys创建 41 print(c) 42 43 #字典的循环 44 for i in info: 45 print(i,info[i]) 46 47 for k,v in info.items(): 48 print(k,v) #速度慢,需要转换为列表
练习
1 av_catalog = { 2 '欧美':{ 3 'www.youporn.com':['很多免费的,世界最大','质量一般'], 4 'www.pornhub.com':['很多免费,也很大','质量比yourporn高点'], 5 'letmedothistoyou.com':['多是自拍,高质量图很多','资源不多,更新慢'], 6 'x-art.com':['质量很高,真的很高','全部收费'] 7 }, 8 '日韩':{ 9 'tokyo-hot':['质量怎样不清楚,个人已经不喜欢日韩范了','听说是收费的'], 10 'nanrenvip.org':['日本艺术家百科全书'] 11 }, 12 '大陆':{ 13 '1024':['全部免费,真好,好人一生平安','服务器在国外,慢'] 14 } 15 } 16 17 #改 18 av_catalog['大陆']['1024'][1] = '服务器在国外,慢,也可以在国内做镜像' 19 print(av_catalog) 20 21 #添加 22 av_catalog.setdefault('台湾',{'www.baidu.com':['小地方没打听过','再写一句方便操作']}) 23 av_catalog.setdefault('大陆',{'www.baidu.com':['小地方没打听过','再写一句方便操作']})#如果存在则不发生变化 24 print(av_catalog)
三级菜单
1 data = { 2 '北京':{ 3 '昌平':{ 4 '天通苑':['链家'] 5 }, 6 '朝阳':{ 7 '望京':['奔驰','陌陌'], 8 '国贸':['CICC','HP'] 9 } 10 }, 11 '广东':{ 12 '东莞':{}, 13 '常熟':{} 14 } 15 } 16 exit_flag = False 17 18 19 while not exit_flag: 20 for i in data: 21 print(i) 22 23 choica = input('选择进入1>>:') 24 if choica in data: 25 while not exit_flag: 26 for i2 in data[choica]: 27 print('\t',i2) 28 choica2 = input('选择进入2>>:') 29 if choica2 in data[choica]: 30 while not exit_flag: 31 for i3 in data[choica][choica2]: 32 print('\t\t',i3) 33 choica3 = input('选择进入3>>:') 34 if choica3 in data[choica][choica2]: 35 for i4 in data[choica][choica2][choica3]: 36 print('\t\t',i4) 37 choica4 = input('输入B返回上一级') 38 if choica4 == 'b': 39 pass 40 elif choica4 =='q': 41 exit_flag = True 42 if choica3 == 'b': 43 break 44 elif choica3 == 'q': 45 exit_flag = True 46 if choica2 == 'b': 47 break 48 elif choica2 == 'q': 49 exit_flag = True