Python学习Day1-补充
一.解释器:
二.编写一个HelloWorld:
a.在Notepad++中编写代码,保存到桌面命名为HelloWorld.py
b.进入Cmd终端:cd进入桌面目录
c.运行保存于桌面上的python文件:
d.可以进入python的交互界面直接编写代码:
在交互界面中编写代码相当于保存于内存中,关闭之后无法保存。交互器是主要用来对代码进行调试的。
三.变量命名规范:
1 变量定义的规则: 2 3 变量名只能是 字母、数字或下划线的任意组合 4 变量名的第一个字符不能是数字 5 以下关键字不能声明为变量名 6 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 7 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
a.驼峰体:
AgeOfOldboy = 56
NumberOfStudents = 80
b.下划线:
age_of_oldboy = 56
Number_of_students = 80
建议下划线
不规范的命名示例:
*补充拓展:
为什么name2不会随着name1的变化而变化呢???
如图所示:
四.常量:
五.格式化输出:
1 #提示输入姓名,年龄,工作,家乡,并按一定的格式输出: 2 3 name = input("Name:") 4 age = int(input("Age:") ) #%d类型是数字类型,需要将字符串类型强制转换为数字类型 5 job = input("Job:") 6 hometown = input("Hometown:") 7 8 # print("----------info of " + name +"---------") 9 # print("Name: " + name) 10 # print("Age " + age) 11 # print("Job: " + job) 12 # print("Hometown: " + hometown) 13 # print("-----------end------------") 14 15 info = ''' 16 -----------info of %s--------- 17 Name: %s 18 Age: %d 19 Job: %s 20 Hometown: %s 21 ------------- end ----------- 22 ''' % (name,name,age,job,hometown) 23 #s:string 24 #d:digit 25 #f:float 26 print(info) 27 28 结果为: 29 Name:mm 30 Age:18 31 Job:it 32 Hometown:GD 33 34 -----------info of mm--------- 35 Name: mm 36 Age: 18 37 Job: it 38 Hometown: GD 39 ------------- end -----------
六.if判断语句:
1.实例:用if语句判断用户登录。
1 #-------------验证用户登录---------------- 2 #提示用户输入用户名密码 3 #验证用户名密码 4 # 如果用户名密码正确则登录成功 5 # 如果用户名密码错误则提示重新输入 6 7 _username = "MM" 8 _password = "abc123" 9 10 username = input("username:") 11 password = input("password:") 12 13 if (username == _username) and (password == _password): 14 print("恭喜你,%s,登录成功!" % username) 15 else: 16 print("请重新输入用户名或密码!!!")
2.实例:输入姓名,性别,判断如果是女生,打印我喜欢女生,否则,打印 一起来搞基!
1 #---------------判断男女生---------------- 2 #提示输入姓名,性别 3 #判断性别是否为女生 4 # 如果是女生,则输出我喜欢女生 5 # 如果不是,则输出一起来搞基 6 7 8 name = input("name:") 9 sex = input("sex:") 10 11 if sex == "F" or sex == "f": 12 print("我喜欢女生") 13 else: 14 print("一起来搞基!")
3.实例:输入姓名,年龄,判断如果是女生且年龄小于28岁,打印我喜欢女生,否则,打印 姐弟恋也很好哦!
1 #-----------判断男女生和年龄-------------- 2 #提示输入姓名,性别和年龄 3 #判断性别是否为女生且年龄是否小于28岁 4 # 如果是,则输出我喜欢女生 5 # 如果不是,则输出姐弟恋也很好哦! 6 7 name = input("name:") 8 sex = input("sex:") 9 age = int(input("age:")) 10 11 if (sex == "F" or sex == "f") and age < 28: 12 print("我喜欢女生") 13 else: 14 print("姐弟恋也很好哦!")
4.实例:输入姓名,年龄,判断如果是女生且年龄小于28岁,打印我喜欢女生,否则,打印 姐弟恋也很好哦!如果是男生,打印 一起来搞基!
1 #-----------判断男女生和年龄升级版---------- 2 #提示输入姓名,性别和年龄 3 #判断是否为女生 4 # 判断是否小于28岁 5 # 如果是则输出,我喜欢女生 6 # 否则输出,姐弟恋也很好哦! 7 #否则输出,一起来搞基 8 9 10 name = input("name:") 11 sex = input("sex:") 12 age = int(input("age:")) 13 14 if (sex == "F" or sex == "f"): 15 if age < 28: 16 print("我喜欢女生") 17 else: 18 print("姐弟恋也很好哦!") 19 else: 20 print("一起来搞基!")
5.实例:成绩有ABCDE5个等级,分别对应如下:
# A 90-100
# B 80-89
# C 60-79
# D 40-59
# E 0-39
#
# 要求用户输入0-100的数字后,打印对应成绩
1 #-----------打印成绩----------- 2 #提示输入一个数字 3 #判断是否大于100 4 # 如果是输出成绩最多只能到100 5 #否则判断是否大于等于90 6 # 如果是输出A 7 #否则判断是否大于等于80 8 # 如果是输出B 9 #否则判断是否大于等于60 10 # 如果是输出C 11 #否则判断是否大于等于40 12 # 如果是输出D 13 #否则判断是凑大于等于0 14 # 如果是输出E 15 #否则输出成绩不能是负数! 16 17 18 score = int(input("请输入0-100的数字:")) 19 20 if score > 100: 21 print("成绩最多只能到100") 22 elif score >= 90: 23 print("A") 24 elif score >= 80: 25 print("B") 26 elif score >= 60: 27 print("C") 28 elif score >= 40: 29 print("D") 30 elif score >= 0: 31 print("E") 32 else: 33 print("成绩不能是负数!") 34 35 36 最早写的一般代码,如下: 37 score = int(input("请输入0-100的数字:")) 38 39 if (score <= 100) and (score >= 90) : 40 print("A") 41 elif (score <= 89) and (score >= 80) : 42 print("B") 43 elif (score <= 79) and (score >= 60) : 44 print("C") 45 elif (score <= 59) and (score >= 40) : 46 print("D") 47 elif (score <= 39) and (score >= 0) : 48 print("E") 49 else: 50 print("输入值有误!")
七.while循环:
1.实例:实现打印1-100的偶数
1 #----------实现打印1-100的偶数------------ 2 #初始化count等于1 3 #当count小于等于100 4 # 判断count模2是否为0 5 # 如果是,则打印偶数 6 7 count = 1 8 9 while count <= 100: 10 if count %2 == 0: 11 print("loop ",count) 12 # else: 13 # pass 14 count += 1
2.实例:循环打印1-100,第50次不打印值,第60-80次打印对应值的平方
1 #-----循环打印1-100,第50次不打印,60-80打印平方 2 #初始化count为1 3 #当count小于等于100 4 # 判断count是否为50,如果是,则pass 5 # 否则判断count是否大于等于60并且小于等于80 6 # 如果是则输出count的平方 7 # 否则输出count的值 8 9 count = 1 10 11 while count <= 100: 12 if count == 50: 13 pass 14 elif count >= 60 and count <= 80: 15 print(count*count) 16 else: 17 print(count) 18 19 count += 1
3.实例:猜一次年龄游戏
1 #-----------猜年龄游戏------------- 2 #初始化年龄为25 3 #提示出入猜测的年龄 4 #判断猜测年龄是否等于实际年龄 5 # 如果是,则输出恭喜你,猜对了! 6 #否则判断是否大于 7 # 如果是,则输出try smaller! 8 #否则,输出 try bigger! 9 10 11 age = 25 12 13 user_guess = int(input("请猜测年龄:")) 14 if user_guess == age: 15 print("恭喜你,猜对了!") 16 elif user_guess > age: 17 print("try smaller!") 18 else: 19 print("try bigger!")
4.实例:(猜年龄升级版)优化猜年龄游戏,允许用户最多猜3次,中间猜对了,直接跳出循环。
1 #-----------3次猜测年龄机会----------- 2 3 age = 25 #初始化年龄 4 count = 0 #计数初始化 5 while count < 3: #while判断count是否小于3,如果小于3则 6 #提示输出猜测的年龄 7 user_guess = int(input("请输入猜测年龄:")) 8 if user_guess == age: #判断猜测年龄和实际年龄是否相等 9 print("恭喜你猜对了!") #输出结果 10 break #break跳出整个循环,continue跳出本次循环,exit退出程序 11 elif user_guess > age: #判断猜测年龄大于实际年龄,则 12 print("try smaller!") #输出往小了猜 13 else: #判断猜测年龄小于实际年龄,则 14 print("try bigger!") #输出王大了猜 15 count += 1 #每次循环结束count加1
5.实例:(猜年龄完善版)优化猜年龄游戏,允许用户最多猜3次,猜了3次后,再问是否还想玩,如果用户选y,在允许猜3次,以此往复。
1 #---------------猜年龄游戏完善版---------------------- 2 3 #思路:在guess_age升级版的基础上进行修改,猜3次结束之后来判断,所以直接在while循环下一层开始进行判断count是否为3, 4 # 如果是,增加一个是否想玩的输入,选择y则进入之前猜测的环节,此时count为3无法循环,所以这时候count初始化为0, 5 # 如果count不是3,直接进入之前猜测的环节。 6 #反思:思维不严谨,重复代码太多,后面进行修正。 7 8 原始代码如下: 9 ''' 10 age = 25 11 count = 0 12 while count < 4: 13 if count == 3: 14 choice = input("是否还想玩?y/n:") 15 if choice == "y": 16 user_guess = int(input("请输入猜测年龄:")) 17 count = 0 18 if user_guess == age: 19 print("恭喜你猜对了!") 20 break 21 elif user_guess > age: 22 print("try smaller!") 23 else: 24 print("try bigger!") 25 count += 1 26 else: 27 break 28 else: 29 user_guess = int(input("请输入猜测年龄:")) 30 if user_guess == age: 31 print("恭喜你猜对了!") 32 break 33 elif user_guess > age: 34 print("try smaller!") 35 else: 36 print("try bigger!") 37 count += 1 38 ''' 39 40 #修正版本: 41 #思路:当猜测了3次之后要想重新猜测3次的关键点在于这个count = 0!!!!!!!,所以需要在猜测3次之后将count变成0. 42 43 age = 25 44 count = 0 45 46 while count < 3: 47 user_guess = int(input("请输入猜测年龄:")) 48 if user_guess == age: 49 print("恭喜你,猜对了!") 50 break 51 elif user_guess > age: 52 print("try smaller!") 53 else: 54 print("try bigger!") 55 56 count += 1 57 58 if count == 3: #判断是否猜测了3次,如果是,则 59 #提示输入是否继续猜年龄 60 choice = input("是否继续猜年龄?(y|Y):") 61 if choice == 'y' or choice == 'Y': #继续猜年龄 62 count = 0 #初始化count为0
6.while。。。else语句:
实例:
1 #while后面的else作用是指,当while循环正常执行完,中间没有被break终止的话,就会执行else后面的语句. 2 #作用:提供一个简单的方法,帮助我们判断一个程序是否正常执行完,是否有问题 3 4 count = 0 #初始化coun为0 5 while count <= 5: #while判断count是否小于等于5,如果是; 6 print("loop ",count) #输出count的值 7 # if count == 3: #判断count是否等于3,如果是 8 # break #跳出整个循环 9 count += 1 #每次循环结束count加1 10 else: 11 print("loop is done...") #while正常循环5次结束后输出循环结束 12 13 print("out of loop!")
八.break和continue:
1.实例:break
1 #-------------break-------------- 2 3 count = 0 4 while count <= 100: 5 print("loop ",count) 6 if count == 5: 7 break #break跳出整个循环 8 count += 1 9 10 #输出结果: 11 # loop 0 12 # loop 1 13 # loop 2 14 # loop 3 15 # loop 4 16 # loop 5
2.实例:continue
1 #------------------continue-------------------------- 2 3 count = 0 4 while count <= 100: 5 print("loop ",count) 6 if count == 5: 7 continue #跳出本次循环,count依然是5,继续判断是否为5,则又进入if判断语句中,最后是个死循环 8 count += 1 9 10 结果:continue在这里会是一个死循环,她是跳出本次循环 11 #loop 0 12 #loop 1 13 #loop 2 14 #loop 3 15 #loop 4 16 #loop 5 17 #loop 5 18 #loop 5 19 #. 20 #. 21 #. 22 23 24 count = 0 25 while count <= 100: 26 count += 1 # count在continue判断语句前面,防止进入死循环 27 if count > 5 and count < 95: 28 continue 29 print("loop ",count) 30 31 print("------out of while loop-------") 32 33 34 # 结果: 35 # loop 1 36 # loop 2 37 # loop 3 38 # loop 4 39 # loop 5 40 # loop 95 41 # loop 96 42 # loop 97 43 # loop 98 44 # loop 99 45 # loop 100 46 # loop 101 47 # ------out of while loop-------
九.浮点数:
1.浮点数:有限小数或者无限循环小数
2.小数精度:python默认是17位,也就是小数点后16位,这个精确度越往后越不准
如:
1 #python默认的是17位的精度,所以小数点之后只能存16位。 2 3 a = 1.21212121212121212121 4 b = 1.23456789123456789123 5 print(a) 6 print(b) 7 8 # 1.2121212121212122 9 # 1.234567891234568 10 #结果为何??? 11 # Python默认的是17位精度,也就是小数点后16位,尽管有16位,但是这个精确度却是越往后越不准的。
3.如何使用更高精度呢?
1 #借助decimal模块的"getcontext"和"Decimal"方法 2 3 a = 1.21212121212121212121 4 b = 1.23456789123456789123 5 6 from decimal import * 7 print(getcontext()) 8 #Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow]) 9 10 #prec表示的是精度,可以进行调整 11 getcontext().prec = 50 12 print(getcontext()) 13 #Context(prec=50, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow]) 14 15 print(Decimal(a)) 16 print(Decimal(b)) 17 18 # 1.2121212121212121548552431704592891037464141845703125 19 # 1.2345678912345678934769921397673897445201873779296875
十.列表:
1.常用操作:
1 #----------list常用操作----------- 2 #1.创建: 3 4 list_test1 = ['mm','tt'] 5 list_test2 = list('mm') 6 list_test3 = list(['mm','tt']) 7 8 #2.索引: 9 name = ['mm','tt','MM',5,13,8,24] 10 print(name[0]) 11 print(name[2]) 12 # mm 13 # MM 14 15 #3.切片: 16 print(name[0:2]) 17 print(name[2:5]) 18 print(name[:2]) 19 print(name[2:]) 20 print(name[:]) 21 print(name[::2]) #2为步长 22 print(name[::-1]) #反转列表 23 24 # ['mm', 'tt'] 25 # ['MM', 5, 13] 26 # ['mm', 'tt'] 27 # ['MM', 5, 13, 8, 24] 28 # ['mm', 'tt', 'MM', 5, 13, 8, 24] 29 # ['mm', 'MM', 13, 24] 30 # [24, 8, 13, 5, 'MM', 'tt', 'mm'] 31 32 #4.追加: 33 name.append('mumu') 34 print(name) 35 36 #['mm', 'tt', 'MM', 5, 13, 8, 24, 'mumu'] 37 38 #5.删除: 39 name.remove('tt') 40 print(name) 41 print(name.pop()) 42 43 #['mm', 'MM', 5, 13, 8, 24, 'mumu'] 44 # 'mumu' 45 46 #6.长度: 47 print(len(name)) 48 49 # 6 50 51 #7.包含: 52 print('mm' in name) 53 print('tt' in name) 54 55 # True 56 # False 57 58 #8.循环: 59 for i in name: 60 print(i) 61 62 # mm 63 # MM 64 # 5 65 # 13 66 # 8 67 # 24
2.习题:
1 #习题1:创建一个空列表,命名为names,往里面添加old_driver,rain,jack,shanshan,peiqi,black_girl元素 2 3 names = [] 4 names.append('old_driver') 5 names.append('rain') 6 names.append('jack') 7 names.append('shanshan') 8 names.append('peiqi') 9 names.append('black_girl') 10 print(names) 11 12 #结果:['old_driver', 'rain', 'jack', 'shanshan', 'peiqi', 'black_girl'] 13 14 #习题2:往names列表里black_girl前面插入一个alex 15 names.insert(5,'alex') 16 print(names) 17 18 #结果:['old_driver', 'rain', 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl'] 19 20 #习题3:把shanshan的名字改为中文,姗姗 21 names[3] = '姗姗' 22 print(names) 23 24 #结果:['old_driver', 'rain', 'jack', '姗姗', 'peiqi', 'alex', 'black_girl'] 25 26 #习题4:往names列表里rain的后面插入一个子列表,['oldboy','oldgirl'] 27 names.insert(2,['oldboy','oldgirl']) 28 print(names) 29 30 #结果:['old_driver', 'rain', ['oldboy', 'oldgirl'], 'jack', '姗姗', 'peiqi', 'alex', 'black_girl'] 31 32 #习题5:返回peiqi的索引值 33 print(names.index('peiqi')) 34 35 #结果:5 36 37 #习题6:创建新列表[1,2,3,4,2,5,6,2]合并入names列表 38 names2 = [1,2,3,4,2,5,6,2] 39 print(names + names2) #结果为:['old_driver', 'rain', ['oldboy', 'oldgirl'], 'jack', '姗姗', 'peiqi', 'alex', 'black_girl', 1, 2, 3, 4, 2, 5, 6, 2] 40 41 names.extend(names2) 42 print(names) #结果为:['old_driver', 'rain', ['oldboy', 'oldgirl'], 'jack', '姗姗', 'peiqi', 'alex', 'black_girl', 1, 2, 3, 4, 2, 5, 6, 2] 43 44 #习题7:取出names列表中索引4-7的元素 45 46 a = names[4:7] 47 print(a) 48 49 #结果:['姗姗', 'peiqi', 'alex'] 50 51 #习题8:取出names列表中索引2-10的元素,步长为2 52 53 b = names[2:10:2] 54 print(b) 55 56 #结果:[['oldboy', 'oldgirl'], '姗姗', 'alex', 1] 57 58 59 #习题9:取出names列表中最后3个元素 60 61 c = names[-3:] 62 print(c) 63 64 #结果:[5, 6, 2] 65 66 #习题10:循环names列表,打印每个元素的索引值,和元素 67 68 #尝试1: 69 70 for i in names: 71 print('索引值:',names.index(i),',','元素:',i) 72 73 #结果: 74 # 有相同的元素的时候只能返回最前面元素的索引!!! 75 ''' 76 索引值: 0 , 元素: old_driver 77 索引值: 1 , 元素: rain 78 索引值: 2 , 元素: ['oldboy', 'oldgirl'] 79 索引值: 3 , 元素: jack 80 索引值: 4 , 元素: 姗姗 81 索引值: 5 , 元素: peiqi 82 索引值: 6 , 元素: alex 83 索引值: 7 , 元素: black_girl 84 索引值: 8 , 元素: 1 85 索引值: 9 , 元素: 2 86 索引值: 10 , 元素: 3 87 索引值: 11 , 元素: 4 88 索引值: 9 , 元素: 2 89 索引值: 13 , 元素: 5 90 索引值: 14 , 元素: 6 91 索引值: 9 , 元素: 2 92 ''' 93 94 #正确方法1: 95 for index,value in enumerate (names): #enumerate:枚举 96 print('索引值:',index,',','元素:',value) 97 98 #正确结果: 99 ''' 100 索引值: 0 , 元素: old_driver 101 索引值: 1 , 元素: rain 102 索引值: 2 , 元素: ['oldboy', 'oldgirl'] 103 索引值: 3 , 元素: jack 104 索引值: 4 , 元素: 姗姗 105 索引值: 5 , 元素: peiqi 106 索引值: 6 , 元素: alex 107 索引值: 7 , 元素: black_girl 108 索引值: 8 , 元素: 1 109 索引值: 9 , 元素: 2 110 索引值: 10 , 元素: 3 111 索引值: 11 , 元素: 4 112 索引值: 12 , 元素: 2 113 索引值: 13 , 元素: 5 114 索引值: 14 , 元素: 6 115 索引值: 15 , 元素: 2 116 ''' 117 118 #正确方法2: 119 count = 0 120 for i in names: 121 print(count,i) 122 count += 1 123 124 #正确结果: 125 ''' 126 0 old_driver 127 1 rain 128 2 ['oldboy', 'oldgirl'] 129 3 jack 130 4 姗姗 131 5 peiqi 132 6 alex 133 7 black_girl 134 8 1 135 9 2 136 10 3 137 11 4 138 12 2 139 13 5 140 14 6 141 15 2 142 ''' 143 144 #习题11:循环names列表,打印每个元素的索引值和元素,当索引为偶数时,把对应的元素改成-1 145 146 for index,value in enumerate (names): 147 if index % 2 == 0: 148 print('索引值:',index,',','元素:',-1) 149 else: 150 print('索引值:',index,',','元素:',value) 151 152 #结果: 153 ''' 154 索引值: 0 , 元素: -1 155 索引值: 1 , 元素: rain 156 索引值: 2 , 元素: -1 157 索引值: 3 , 元素: jack 158 索引值: 4 , 元素: -1 159 索引值: 5 , 元素: peiqi 160 索引值: 6 , 元素: -1 161 索引值: 7 , 元素: black_girl 162 索引值: 8 , 元素: -1 163 索引值: 9 , 元素: 2 164 索引值: 10 , 元素: -1 165 索引值: 11 , 元素: 4 166 索引值: 12 , 元素: -1 167 索引值: 13 , 元素: 5 168 索引值: 14 , 元素: -1 169 索引值: 15 , 元素: 2 170 ''' 171 172 # for index,value in enumerate(names): 173 # if index %2 == 0: 174 # names[index] = -1 175 # print(index,value) 176 # 177 # print(names) 178 179 #习题12:names里有3个2,请返回第2个2的索引值,要动态找(提示,找到第一个2的位置,再此基础上在找第2个) 180 181 ''' #这种方法不可取,因为将列表的元素改变了 182 names[names.index(2)] = 'x' 183 print(names.index(2)) 184 185 #由于列表中有相同的元素的时候,只能返回第一个元素的索引,所以这个时候将一个不同的元素替换掉这个相同的元素的时候,就可以返回第二个相同元素的所以 186 #结果:12 187 ''' 188 189 #正确方法: 190 #可以使用切片的方法,当找到第一个元素之后,从第一个元素后面切割出一个新的列表,然后在新的列表中找到第一个元素,然后用第一次找到的元素的索引加上第二次找到的元素的索引在加上1就找到了题目答案 191 192 first_index = names.index(2) 193 new_list = names[first_index+1:] 194 second_index = new_list.index(2) 195 print(first_index+second_index+1) 196 197 #正确答案:12 198 199 200 习题13: 201 # 现有商品列表如下: 202 # products = [['Iphone8',6888],['MacPro',14800],['小米6',2499],['Coffee',31],['Book',80],['Nike Shoes',799]] 203 # 需打印出这样的格式: 204 # 205 # ---------商品列表---------- 206 # 0.Iphone 6888 207 # 1.MacPro 14800 208 # 2.小米6 2499 209 # 3.Coffee 31 210 # 4.Book 80 211 # 5.NIke Shoes 799 212 213 #不规范解答: 214 215 products = [['Iphone8',6888],['MacPro',14800],['小米6',2499],['Coffee',31],['Book',80],['Nike Shoes',799]] 216 217 print("---------商品列表----------") 218 219 for index,value in enumerate (products): 220 print(index,value) 221 222 #结果: 223 ''' 224 ---------商品列表---------- 225 0 ['Iphone8', 6888] 226 1 ['MacPro', 14800] 227 2 ['小米6', 2499] 228 3 ['Coffee', 31] 229 4 ['Book', 80] 230 5 ['Nike Shoes', 799] 231 ''' 232 233 #low方法1: 234 print("---------商品列表----------") 235 for i1,v1 in enumerate (products): 236 print(i1,end=" ") #end="" 表示不换行,在这里表示输出一个索引不换行 237 for i2,v2 in enumerate(v1): 238 print(v2,end= " ") #表示输出值不换行 239 print("") #任意输出一个空的东西也会换行 240 241 #正确结果: 242 ''' 243 ---------商品列表---------- 244 0 Iphone8 6888 245 1 MacPro 14800 246 2 小米6 2499 247 3 Coffee 31 248 4 Book 80 249 5 Nike Shoes 799 250 ''' 251 252 #正确方法2: 253 print("---------商品列表----------") 254 for i3,v3 in enumerate(products): 255 print("%s. %s %s" % (i3,v3[0],v3[1])) #格式化输出 256 257 #正确结果:简单太多 258 ''' 259 ---------商品列表---------- 260 0. Iphone8 6888 261 1. MacPro 14800 262 2. 小米6 2499 263 3. Coffee 31 264 4. Book 80 265 5. Nike Shoes 799 266 ''' 267 268 #习题14:写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购物车里的商品列表 269 270 #方法: 271 exit_flag = False #标志位,控制while循环 272 products = [['Iphone8',6888],['MacPro',14800],['小米6',2499],['Coffee',31],['Book',80],['Nike Shoes',799]] 273 shopping_cart = [] #创建一个空购物车列表 274 275 while not exit_flag: 276 print("---------商品列表----------") 277 for i,v in enumerate(products): 278 print("%s. %s %s" % (i,v[0],v[1])) 279 choice = input("请问您想买什么:") 280 if choice.isdigit(): #isdigit:判断是否为数字 281 choice = int(choice) #将str转换为int 282 if choice >= 0 and choice < len(products): # 判断输入的数值是否超过列表长度 283 print("加入购物车的产品为:%s" % (products[choice])) 284 shopping_cart.append(products[choice]) #将选择的产品加入到购物车中 285 else: 286 print("对不起!您输出的数值有误!") #若输出的数值超过选项的结果 287 elif choice == "q": 288 exit_flag = True #将while的标志位改变,将跳出循环 289 if len(shopping_cart) > 0: #判断购物车是否有产品 290 print("-------您的购物车产品--------") 291 for i,v in enumerate(shopping_cart): 292 print("%s. %s %s" % (i,v[0],v[1])) 293 else: 294 print("对不起!您输出的数值有误!")