周日,多云,记录生活分享点滴
参考博客:https://www.cnblogs.com/yuanchenqi/articles/5782764.html
Python版本:3.5
目录:
1.嵌套基本逻辑
2.shopping 用户将商品添加到购物车并购买的程序
3.shopping 解析版
4.字典
1)数据类型
2)创建字典
3)增
4)查
5)改
6)删
7)其他操作以及涉及到的方法
8)字典的嵌套
9)排序
10)字典的遍历
5.String 字符串
1)字符串操作
2)String的内置方法
--
1.嵌套基本逻辑
1 a = [[1,2,3],"chung",4,(5,6,7)] 2 #print(a) 3 print (a[0][1])#取[2] 4 print (a[3][1])#查(6),元组可以被查询,但不能被修改
2.shopping 用户将商品添加到购物车并购买的程序
1 product_list = [ 2 ('Mac', 9000), 3 ('kindle', 800), 4 ('tesla', 900000), 5 ('python book', 105), 6 ('bike', 2000), 7 ] 8 saving = input('please input your money:') 9 shopping_car = [] 10 if saving.isdigit(): 11 saving = int(saving) 12 while True: 13 for i, v in enumerate(product_list, 1): 14 print(i, '>>>>', v) 15 choice = input('选择购买商品编号[退出:q]:') 16 if choice.isdigit(): 17 choice = int(choice) 18 if choice > 0 and choice <= len(product_list): 19 p_item = product_list[choice - 1] 20 if p_item[1] < saving: 21 saving -= p_item[1] 22 shopping_car.append(p_item) 23 else: 24 print('余额不足,还剩%s' % saving) 25 print(p_item) 26 else: 27 print('编码不存在') 28 elif choice == 'q': 29 print('------------您已经购买如下商品----------------') 30 for i in shopping_car: 31 print(i) 32 print('您还剩%s元钱' % saving) 33 break 34 else: 35 print('invalid input')
3.shopping 解析版
1 #首先将商品数据储存到一个列表中(通过嵌套方式) 2 product_list=[ 3 #商品信息用元组或列表表示,目的是把多个信息作为一个元素存储 4 ('Mac',9000), 5 ('kindle',800), 6 ('tesla',900000), 7 ('python book',105), 8 ('bike',2000), 9 ] 10 #目前把商品信息存储到一个大的list里面了 11 12 #用一个变量代表现在拥有多少钱 13 saving=input('please input your money:') 14 shopping_car=[] 15 #有变量之后需要对变量做一个校验,通过 .isdigit 判断输入内容是否为纯数字 16 if saving.isdigit(): 17 #如果是数字,将字符串转成整型,为后面加减法做准备 18 saving=int(saving) 19 20 while True: #while True 的目的是需要反复给用户提供商品列表进行选择 21 22 #接下来是具体内容: 23 #通过for循环打印商品内容 24 for i,v in enumerate(product_list,1): ##enumerate(列举),表示在列表中以“1”的位置开始,起到加序号作用 25 print(i,'>>>>',v) 26 27 #引导用户选择商品 28 choice=input('选择购买商品编号[退出:q]:') 29 30 #验证输入是否合法 31 if choice.isdigit(): 32 choice=int(choice) 33 if choice>0 and choice<=len(product_list): ##len所对应的值是列表的长度 34 35 #验证无问题,需要做两件事 36 #第一:将用户选择商品通过choice取出来 37 p_item=product_list[choice-1] 38 39 #如果钱够,用本金saving减去该商品价格,并将该商品加入购物车 40 if p_item[1]<saving: 41 saving-=p_item[1] 42 shopping_car.append(p_item) 43 44 else: 45 print('余额不足,还剩%s'%saving) 46 print(p_item) 47 else: 48 print('编码不存在') 49 elif choice=='q': 50 print('------------您已经购买如下商品----------------') 51 52 #循环遍历购物车里的商品,购物车存放的是已买商品 53 for i in shopping_car: 54 print(i) 55 print('您还剩%s元钱'%saving) 56 break 57 else: 58 print('invalid input')
4.字典
两大特点:无序、键唯一
1)数据类型
- 不可变类型:整型,字符串,元组
- 可变类型:列表,字典
2)创建字典
第一种,常用创建方法
扫描二维码关注公众号,回复:
11213347 查看本文章
1 dic={'name':'alex'}
第二种,不常用创建方法
1 dic1={} 2 dic2=dict((('name','alex'),)) #从外往里:第一组括号是dict本身携带的,第二组括号代表序列,第三组括号代表键值对。第二三组括号可以是一个列表也可以是一个元组。 3 print(dic2)
第三种,不常用创建方法
1 dic3=dict([['name','alex'],]) 2 print(dic3)
3)增
第一种:如果有,做修改;如果没有,做创建
1 dic1={'name':'alex'} 2 dic1['age']=18 3 print(dic1)
第二种:键存在,不改动,返回字典中相应的键对应的值
1 dic1={'name':'alex'} 2 ret=dic1.setdefault('age',34) 3 print(ret)
第三种:键不存在,在字典中中增加新的键值对,并返回相应的值
1 dic1={'name':'alex'} 2 ret2=dic1.setdefault('hobby','girl') 3 print(dic1) 4 print(ret2)
4)查
第一种:通过键去查找
1 dic3={'age': 18, 'name': 'alex', 'hobby': 'girl'} 2 print(dic3['name'])
第二种:通过list来将 dic3.keys() 的结果转换成列表式结果 keys()/values()/items()
1 dic3={'age': 18, 'name': 'alex', 'hobby': 'girl'} 2 print(list(dic3.keys())) #输出的是键 3 print(list(dic3.values())) #输出的是值 4 print(list(dic3.items())) #输出的是元组,键与值的组合
5)改
第一种:
1 dic3={'age': 18, 'name': 'alex', 'hobby': 'girl'} 2 dic3['age']=55 3 print(dic3)
第二种: .update 如果原来有,覆盖掉,如果没有,做创建
1 dic4={'age': 18, 'name': 'alex', 'hobby': 'girl'} 2 dic5={'1':'111','2':'222'} #做创建 3 dic5={'1':'111','name':'222'} #覆盖掉 4 dic4.update(dic5) 5 print(dic4) 6 print(dic5)
6)删
第一种:清空字典
1 dic5 = {'name': 'chung', 'age': 18, 'class': 1} 2 dic5.clear() 3 print(dic5)
第二种:删除字典中指定键值对
1 dic5 = {'name': 'alex', 'age': 18, 'class': 1} 2 del dic5['name'] 3 print(dic5)
第三种:删除字典中指定键值对,并返回该键值对的值
1 dic5 = {'name': 'alex', 'age': 18, 'class': 1} 2 print(dic5.pop('age')) 3 ret=dic5.pop('age') 4 print(ret) 5 print(dic5)
第四种:随机删除某组键值对,并以元组方式返回值
1 dic5 = {'name': 'alex', 'age': 18, 'class': 1} 2 a = dic5.popitem() 3 print(a, dic5)
第五种:删除整个字典
1 dic5 = {'name': 'alex', 'age': 18, 'class': 1} 2 del dic5 3 print(dic5)
7)其他操作以及涉及到的方法
dict.fromkeys方法
1 dic6=dict.fromkeys(['host1','host2','host3'],'test') 2 print(dic6) #{'host3': 'test', 'host1': 'test', 'host2': 'test'}
以下涉及深浅拷贝的一点知识
1 dic6=dict.fromkeys(['host1','host2','host3'],['test1','tets2']) 2 print(dic6) #{'host2': ['test1', 'tets2'], 'host3': ['test1', 'tets2'], 'host1': ['test1', 'tets2']} 3 dic6['host2'][1]='test3' 4 print(dic6) #{'host3': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host1': ['test1', 'test3']}
8)字典的嵌套:在修改前进行查询,查询时遇到字典就用键,遇到列表就用位置
1 城市 = { 2 "一线":{ 3 "北京": ["故宫","颐和园"], 4 "上海": ["迪士尼"], 5 }, 6 "二线":{ 7 "杭州":["西湖","其他的?求补充"], 8 "南京":["夫子庙","秦淮河"], 9 } 10 } 11 城市['二线']["杭州"][1]='雷峰塔' 12 print(城市['二线']["杭州"])
9)排序
1 dic={5:'555',2:'666',4:'444'} 2 print(sorted (dic)) #根据键来排序,显示键 3 print(sorted(dic.values())) #根据值来排序,显示值 4 print(sorted(dic.items())) #根据键来排序,显示键值对 5 dic.has_keys(5) 6 print(5 in dic)
10)字典的遍历
第一种:效率高
1 dic5={'name': 'alex', 'age': 18} 2 for i in dic5: 3 print(i) #默认循环字典里面的键 4 for i in dic5: 5 print(i,dic5[i])+ #打印字典里面的键和值
第二种:效率低,转化步骤偏多
1 dic5={'name': 'alex', 'age': 18} 2 for i,v in dic5.items(): 3 print(i,v) #打印字典里面的键值对,当只有一个变量i时,则打印元组形式的键值对
5.String 字符串
1)字符串操作
第一种:双引号与单引号无区别,但是在特殊情况下注意区分
1 a="Let's go " 2 print(a)
第二种: * 重复输出字符串
1 print('hello'*20)
第三种: [] ,[:] 通过索引获取字符串中字符,这里和列表的切片操作是相同的,具体内容见列表
1 print('helloworld'[2:])
第四种:判断in前面内容是否在后面内容中
1 print(123 in [23,45,123]) 2 print('e2l' in 'hello')
第五种: % 格式字符串
1 print('alex is a good teacher') 2 print('%s is a good teacher'%'alex')
第六种:拼接
1 # 第二个 join 用字符串将a,b,d拼接,效率高 2 c= ''.join([a,b,d]) 3 print(c) 4 5 # 第二个效率低 6 a='123' 7 b='abc' 8 d='44' 9 c=a+b 10 print(c)
2)String的内置方法
常用字符串内置方法:
1 st='hello kitty {name} is {age}' 2 3 print(st.count('l')) #统计元素个数 4 print(st.center(50,'#')) #居中 5 print(st.startswith('he')) #判断是否以某个内容开头 6 print(st.find('t')) #查找到第一个元素,并将索引值返回 7 print(st.format(name='alex',age=37)) #格式化输出的另一种方式 8 print('My tLtle'.lower()) #大写变小写 9 print('My tLtle'.upper()) #小写变大写 10 print('\tMy tLtle\n'.strip()) #只处理文本内容(左右两边),跳过空格、换行符 11 print('My title title'.replace('itle','lesson',1)) #将字符串内容进行替换,1表示在有多个相同内容的时候,只替换一次 12 print('My title title'.split('i',1)) #以左为准,分割对象(i)把字符串分割成列表,分割一次
其他字符串内置方法
1 st='hello kitty {name} is {age}' 2 3 print(st.count('l')) #统计元素个数 4 print(st.capitalize()) #首字母大写 5 print(st.center(50,'#')) #居中 6 print(st.endswith('tty3')) #判断是否以某个内容结尾 7 print(st.startswith('he')) #判断是否以某个内容开头 8 print(st.expandtabs(tabsize=20)) #规定字符串中的空格数\t 9 print(st.find('t')) #查找到第一个元素,并将索引值返回 10 print(st.format(name='alex',age=37)) #格式化输出的另一种方式 11 print(st.format_map({'name':'alex','age':22})) #字典也可表示格式化输出 12 print(st.index('t')) #正常状况下同find输出一样 13 print('asd'.isalnum()) #判断是否包含字母或数字,汉字也可以 14 print('12632178'.isdecimal()) #判断是否为十进制的数 15 print('1269999.uuuu'.isnumeric()) #判断是否只由数字组成 16 print('abc'.isidentifier()) #判断是否满足标识符定义规则。标识符定义规则为:只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符。 17 print('Abc'.islower()) #判断是否为全小写 18 print('ABC'.isupper()) #判断是否为全大写 19 print(' e'.isspace()) #判断是否是空格 20 print('My title'.istitle()) #判断首字母是否是大写 21 print('My tLtle'.lower()) #大写变小写 22 print('My tLtle'.upper()) #小写变大写 23 print('My tLtle'.swapcase()) #大写变小写,同时小写变大写 24 print('My tLtle'.ljust(50,'*')) # *依次向左补充,推动字符串至最左端 25 print('My tLtle'.rjust(50,'*')) # *依次向右补充,推动字符串至最右端 26 print('\tMy tLtle\n'.strip()) #只处理文本内容(左右两边),跳过空格、换行符 27 print('\tMy tLtle\n'.lstrip()) #只处理文本内容(左边),跳过空格、换行符 28 print('\tMy tLtle\n'.rstrip()) #只处理文本内容(左边),跳过空格、换行符 29 print('My title title'.replace('itle','lesson',1)) #将字符串内容进行替换,1表示在有多个相同内容的时候,只替换一次 30 print('My title title'.rfind('t')) #从右往左的第一个t的索引位置 31 print('My title title'.split('i',1)) #以左为准,分割对象(i)把字符串分割成列表,分割一次 32 print('My title title'.title()) #按照起始字符的格式将后面变成统一格式