需求
购物车程序:
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录
代码20180424
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 4 prod_list = [ 5 ["iphone", 5000], 6 ["Mac Pro", 12000], 7 ["Starbucks", 31], 8 ["alex", 81], 9 ["Bike", 800]] 10 11 12 user_list = open('user_list', 'r+', encoding='utf-8') 13 14 name = input('请输入用户名: ') 15 password = input('请输入密码') 16 17 user = eval(str(user_list.read())) 18 19 while True: 20 # 判断用户名是否存在 21 if name in user.keys(): # 非初次登录用户 22 # 判断用户登陆信息是否正确 23 if password in user[name]: # 用户名密码正确 24 salary = int(user[name][password]) 25 print('您的工资余额是 33[31;1m%s 33[0m' % salary) 26 break 27 else: 28 password = input('密码错误,请重输:') 29 continue 30 else: # 首次登陆,将用户信息添加入user_list 31 new_user = {} 32 salary = input('salary: ') 33 if salary.isdigit(): 34 salary = int(salary) 35 new_user[password] = salary 36 user[name] = new_user 37 user_list.seek(0) 38 user_list.write(str(user)) 39 break 40 else: 41 print('请重输') 42 continue 43 44 45 # 打开已购买清单 46 shopping_list = open('shopping_list', 'r+', encoding='utf-8') 47 history = eval(str(shopping_list.read())) 48 49 if name not in history: 50 history[name] = [] # 首次登陆用户,历史清单为空 51 shopping_history = history[name] # 非首次登陆用户的历史购物信息 52 shopping_new = [] # 本次购物信息 53 print_hisotry = input('是否打印历史购物清单 =?') 54 if print_hisotry == 'Y': 55 print('-------- 历史购物清单 --------') 56 print(shopping_history) 57 print('-------- The End --------') 58 59 while True: 60 print('-------- 在售商品列表 --------') 61 for index, item in enumerate(prod_list): 62 print(index, item) 63 print('-------- The End --------') 64 65 choice = input('请选择购买哪个商品') 66 if choice == 'quit': # 退出时,将更新的用户信息存入user_list, 并打印本次购买商品清单 67 user[name][password] = str(salary) 68 user_list.seek(0) 69 user_list.write(str(user)) 70 print('-------- 您已成功购买商品清单 --------') 71 print(shopping_new) 72 print('您的工资余额是 33[31;1m%s 33[0m' % salary) 73 print('-------- The End --------') 74 # 将本次购物清单与历史购物信息合并 75 shopping_history.extend(shopping_new) 76 history[name] = shopping_history 77 shopping_list.seek(0) 78 shopping_list.write(str(history)) 79 exit(0) 80 elif not choice.isdigit(): 81 print('请输入有效的商品索引') 82 elif len(prod_list) > int(choice) >= 0: # 用户选择未超出商品列表范围 83 p_item = prod_list[int(choice)] 84 if salary >= p_item[1]: 85 salary -= p_item[1] 86 shopping_new.append(p_item) 87 print('-------- 本次购物清单 --------') 88 print(shopping_new) 89 print('您的工资余额是 33[31;1m%s 33[0m' % salary) 90 print('-------- The End --------') 91 else: 92 print('余额不足') 93 else: 94 print('请输入有效的商品索引')
shipping_list:
{'Lucy': [['iphone', 5800], ['bike', 800]], 'Ada': [['iphone', 5800], ['alex', 81], ['Mac Pro', 12000]], 'Jack': [['Starbucks', 31]]}
user_list:
{'Lucy': {'123': '3200'}, 'Ada': {'abc': '79919'}, 'Jack': {'891': '90000'}, 'Eleanor': {'abc': '8400'}, 'Mike': {'345': '8200'}}