购物车程序
作业需求:
数据结构: goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ...... ] 功能要求: 基础要求: 1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表 2、允许用户根据商品编号购买商品 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4、可随时退出,退出时,打印已购买商品和余额 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示 扩展需求: 1、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买 2、允许查询之前的消费记录
踩分点:
基础要求完成每条15分; 扩展需求完成每条10分; 代码结构足够好,可以酌情加分。
代码如下:
1 import os,pickle 2 3 #定义高亮显示函数 4 def highlight(p): 5 print('\033[1;31;47m%s\033[0m'%p) 6 7 goods = [ 8 {"name": "电脑", "price": 1999}, 9 {"name": "鼠标", "price": 10}, 10 {"name": "游艇", "price": 20}, 11 {"name": "美女", "price": 998}, 12 ] 13 #判断并创建一个消费记录的文件 14 if not os.path.isfile('shopping_record'): 15 f = open('shopping_record','wb') 16 f.close() 17 18 Usermsg = ['zwj','abc123'] 19 bought = [] #列表存储已购买商品 20 highlight('-----输入编号以购买商品,如果要退出请输入q,如果要查询消费记录请输入c-----') 21 while True: 22 # 用户登录 23 in_username = input("请输入用户名:") 24 in_password = input("请输入密码:") 25 if in_username == Usermsg[0] and in_password == Usermsg[1]: 26 in_salary = int(input("请输入工资:")) 27 while True: 28 for index,i in enumerate(goods): 29 print(index,i.get('name'),i.get('price')) 30 choice = input('请选择要购买的商品编号(如果要退出,请输入q):') 31 #用户选择购买商品编号 32 if choice in ['0','1','2','3']: 33 if in_salary >= int(goods[int(choice)].get('price')): 34 bought.append(goods[int(choice)].get('name')) 35 in_salary -= int(goods[int(choice)].get('price')) 36 else: 37 print('余额不足,仅剩%s' %in_salary) 38 continue 39 40 # 用户选择退出 41 elif choice.lower() == 'q': 42 highlight(bought) 43 highlight('所剩余额:%s' %in_salary) 44 f = open('shopping_record','wb') 45 pickle.dump(bought,f) 46 pickle.dump(in_salary,f) 47 f.close() 48 exit() 49 50 # 用户选择查询历史购买记录 51 elif choice.lower() == 'c': 52 print('------上次所买商品如下-------') 53 f = open('shopping_record','rb') 54 b = pickle.load(f) 55 print(b) 56 print('------接下来请继续选择-------') 57 f.close()
搞定!欢迎评论交流。