1 goods = [
2 {"name": "电脑", "price": 1999},
3 {"name": "鼠标", "price": 40},
4 {"name": "保温杯", "price": 250},
5 {"name": "小米手机", "price": 998},
6 {"name": "iPhone 4s", "price": 1800},
7 {"name": "奶茶", "price": 18},
8 {"name": "订书机", "price": 67},
9 ]
10
11 usr_name = input('请输入用户名:')
12 usr_pwd = input('请输入密码:')
13 with open('users', encoding='utf-8') as f: # 验证账号与密码
14 lis = f.readline().split(',')
15 if usr_name in lis and usr_pwd in lis:
16 print('登陆成功'.center(30, '-'))
17 Flag = True
18 shop_car = [] # 空购物车
19 while Flag:
20 print('商品列表'.center(30, '-'))
21 for num, i in enumerate(goods): # 打印商品列表
22 print('%d %s ¥%d'.center(30)%(num, i['name'], i['price']))
23 salary = input('请存入消费金额:') # 存入工资
24 if salary.isdigit():
25 salary = int(salary)
26 money = salary
27 while True:
28 try:
29 usr_choice = input(f'请选择商品序号 结账:q (\033[5;31;2m余额:{salary}\033[0m):') # 输入商品序号
30 if usr_choice == 'q':
31 print('当前购物车'.center(30, '-'))
32 for i in shop_car:
33 print('%s ¥%d' % (i['name'], i['price']))
34 print(f'\n\033[5;31;2m合计:¥{money-salary}\033[0m \033[5;31;2m余额:¥{salary}\033[0m'.center(30, '-'))
35 print('欢迎下次光临'.center(30, '-'))
36 Flag = False
37 break
38 elif salary >= goods[int(usr_choice)]['price']: # 将商品存入购物车
39 salary -= goods[int(usr_choice)]['price']
40 shop_car.append(goods[int(usr_choice)])
41 print('加入购物车成功'.center(20, '*'))
42 else:
43 print(f'余额不足(\033[5;31;2m余额:{salary}\033[0m)'.center(20, '*'))
44 new_choice = input('\n1.结账 2.充值\n请选择:')
45 if new_choice == '1':
46 print('当前购物车'.center(30, '-'))
47 for i in shop_car:
48 print('%s ¥%d'%(i['name'], i['price']))
49 print(f'\n本次消费:\033[5;31;2m¥{money-salary}\033[0m 账户余额:\033[5;31;2m¥{salary}\033[0m'.center(30, '-'))
50 print('欢迎下次光临'.center(30, '-'))
51 Flag = False
52 break
53 elif new_choice == '2':
54 add_money = int(input('请输入充值金额:'))
55 salary += add_money
56 money += add_money
57 except IndexError:
58 print('\n请输入正确的商品编号!\n')
59 except ValueError:
60 print('\n请输入正确的商品编号!\n')
61 else:
62 print('\n\n请输入数字!!!\n\n')
63
64 else:
65 print('账号或密码错误'.center(30, '-'))