代码改变世界

购物车小程序

2018-04-24 14:32  钱先生  阅读(184)  评论(0编辑  收藏  举报

需求

购物车程序:

1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表

2、允许用户根据商品编号购买商品

3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

4、可随时退出,退出时,打印已购买商品和余额

5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示

6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买

7、允许查询之前的消费记录

 

代码20180424

 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('您的工资余额是\033[31;1m%s\033[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('您的工资余额是\033[31;1m%s\033[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('您的工资余额是\033[31;1m%s\033[0m' % salary)
90             print('-------- The End --------')
91         else:
92             print('余额不足')
93     else:
94         print('请输入有效的商品索引')
View Code

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'}}