Python的列表练习-购物车

需求说明

  • 启动程序后让用户输入工资,如果输错工资的次数超过三次则退出

    1
    2
    3
    4
    请输入您的工资:fda
    您的输入有误,请重新输入:fdas
    您的输入有误,请重新输入:fsd
    错误输入超过三次,程序自动退出
  • 输入正确后打印商品清单,允许用户根据商品编号购买商品,参考格式如下

    1
    2
    3
    4
    5
    6
    7
    请输入您的工资:123435
    1 Iphone 5800
    2 Mac pro 12000
    3 Watch 500
    4 Python book 81
    5 Bike 800
    如需购买请输入商品编号[退出:q] :
  • 用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒

  • 可随时退出,退出时打印已购买商品和余额
  • 商品清单使用列表进行存储,例如
1
2
3
4
5
6
7
product_list = [
["Iphone", 5800],
["Mac pro", 12000],
["Watch", 500],
["Python book", 81],
["Bike", 800]
]

示范代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

product_list = [
["Iphone", 5800],
["Mac pro", 12000],
["Watch", 500],
["Python book", 81],
["Bike", 800]
]
shopping_list = []

counter = 1
salary = input('请输入您的工资:')

while not salary.isdigit():
if counter == 3:
exit('输入错误次数过多,程序自动退出')
salary = input("您的输入有误,请重输入:")
counter += 1
else:
salary = int(salary)

while True:
# 打印商品内容
print('商品列表'.center(30, '-'))
for idx, itm in enumerate(product_list, 1):
print('%-3s%-15s%-8s' % (idx, itm[0], itm[1]))

# 引导用户选择商品
your_choice = input('如需购买请输入商品编号[退出请输入q]:')

# 验证输入是否合法
if your_choice.isdigit():
your_choice = int(your_choice)
if 0 < your_choice <= len(product_list):
# 根据 user_choice 将用户选择的商品取出来
buy_itm = product_list[your_choice - 1]
# 如果余额充足,则使用本金减去该商品价格,并将该商品加入购物车
if salary >= buy_itm[1]:
salary -= buy_itm[1]
shopping_list.append(buy_itm)
print('商品 %s 已加入购物车,余额为 \033[0;32m%s\033[0m' % (
buy_itm[0], salary))
else:
print('您的余额不足,当前余额为 \033[0;31m%s\033[0m' % salary)
else:
print('输入的编号 %s 不存在' % your_choice)
elif your_choice == 'q':
print('购物清单'.center(30, '-'))
for x, y in enumerate(shopping_list, start=1):
print('%-3s%-15s%-8s' % (x, y[0], y[1]))
print('您的余额为 \033[032m%s\033[0m' % salary)
exit()
else:
print('\033[0;31m输入的编号 %s 错误\033[0m' % your_choice)
有钱任性,请我吃包辣条
0%