购物车小程序:
1 # __author:"Cheng" 2 # date:2018/2/14 3 4 product_list = [ # 因为商品和价格这里不准备改,所以用元组 。 5 6 ('巧克力', 128), 7 ('吹风机', 218), 8 ('自行车', 688), 9 ('扫地机器人', 1280), 10 ('笔记本电脑', 3888), # 元组最后面都要加逗号。 11 12 ] 13 # 可以给两个变量一起赋值,例如a,b = [2,3]。分析:a和b变量分别赋值2和3 14 saving = input('存多少钱到购物卡:') # saving就是你刚刚输入的钱,存了多少钱在你的账户 15 shop_car = [] # 定义一个空列表,为下面加入该购物车作准备。 16 if saving.isdigit(): # 判断saving是否是数字。 17 saving = int(saving) # 是的话把saving转化为整型。 18 while True: # 死循环,不断打印商品列表让用户选择。 19 20 for goods_num, goods in enumerate(product_list, 1): # for后面跟的goods_num和goods 可以分别把列表中的两个元素分别赋值 。 21 print(goods_num, '--------', goods) # enumerate的作用只有一个,那就是加序号。编号并不等于索引,两者没关联。 22 usr_choice = input('请选择您要购买的商品序号【Q退出】:') # 将用户选择的序号赋值给usr_choice变量。 23 if usr_choice.isdigit(): # 判断用户是否输入数字 24 usr_choice = int(usr_choice) # 把字符串改成数字 25 if usr_choice > 0 and usr_choice <= len(product_list): # 判断用户选择的序号是否超过商品序号或者是负数。 26 c_item = product_list[usr_choice - 1] # 这里c_item表示用户选择的商品,含品名与价格。那么为什么后面的列表索引减1,因为程序是从0开始,用户看到的是从1开始的编号,因此要减1才符合程序所识别的正确位置(索引) 27 if c_item[1] < saving: # c_item[1]代表该商品价格,1代表所在列表的第2个元素,而此处第2个元素为该商品价格。 28 saving -= c_item[1] # 如果商品价格不超过saving(购物卡),那么就用购物卡金额减去商品价格。 29 shop_car.append(c_item) # 将c_item 追加至购物车。这里c_item表示用户选择的商品,含品名与价格。 30 print('---------当前购物车---------') 31 for i in shop_car: 32 print(i) 33 print('余额:%s元'%saving) 34 else: 35 print('余额不足!当前余额:%s元'%saving) 36 print('---------您已购买如下商品---------') 37 for i in shop_car: 38 print(i) 39 print('您还剩%s元!' % saving) 40 while True: 41 add_money = input('是否充值,“是” 请输入充值金额,“否” 请按Q退出(回车确认):') 42 if add_money.isdigit(): 43 add_money = int(add_money) 44 new_saving = 0 45 new_saving = saving + add_money 46 saving = new_saving 47 print('充值成功,当前余额%s元!'%saving) 48 break 49 else: 50 print('请按要求输入!') 51 52 else: 53 print('请输入商品范围的序号!') # 如果选择的序号不在所提供范围,弹出提示。 54 55 elif usr_choice == 'q': # 如果用户输入q,那么程序结束运行,打出欢迎下次光临。 56 print('---------您已购买如下商品---------') 57 for i in shop_car: 58 print(i) 59 print('您还剩%s元!'%saving) 60 print('---------欢迎下次光临---------') 61 break 62 else: 63 print('序号请输入数字!') 64 65 else: 66 input('钱请输入数字,OK?')