购物车程序

作业需求:

数据结构:
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('33[1;31;47m%s33[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()

搞定!欢迎评论交流。

原文地址:https://www.cnblogs.com/NuoMiGao/p/9856808.html