今天练习做一个购物车的小程序
要求:
1:启动后输入用户的工资,并打印商品列表
2:允许用户通过商品编码购买食品
3:用户选择商品后 检测余额是否足够,不够就提醒;
4:可以随时按 q 退出,退出时打印已经购买了的商品,并计算已购买商品的总额
首先通过分析要求,要有一个编写流程与注意事项:
1:输入工资并打印
1)因为是工资,所以再用input接收时 要注意接受值的数据类型
2)直接用int(input())的话,会出现写死,吧所有接受的值转为int,如果中途需要输入英文退出,就会无效
2:允许用户通过商品编码购买食品
1)用户输入编码可能存在超出商品编码的范围,所以在接收时,要判断接受值是否在范围内。
2)一般用户可能不只买一件,所以在这里开启一个循环,让用户买完商品后可以继续输入编码购买
3)这里也是用input接收值(input默认接收值的数据类型为字符串),所以要考虑和1一样的情况;
3:用户选择商品后 检测余额是否足够,不够就提醒
1)存在两种可能,一种是够购买,一种是不够并提醒,所以在这里用判断语句if实现
4:可以随时按 q 退出,退出时打印已经购买了的商品,并计算已购买商品的总额
1)因为接受的值是编码,所以在编码的if条件下,要多加一个判断输入值是否为q,是的话则退出购物
2)退出的时候要打印已购买的商品,并计算总额,因为购买实在 2 中实现的,所以要创建一个列表用于存储商品
并且在每次成功时,将总额减去商品价格
下面是代码。
product_list = [
("u20",1099),
("pro 2",1799),
("meilan-X",2099),
("iphone6s",3250)
]
shoppingcar = []#创建一个列表用于存放已购买的商品
total = 0#创建一个变量存放购买商品的总额
user_salaqy = input("请输入你的工资:")
for index,item in enumerate(product_list):
print(index,item)
if user_salaqy.isdigit():
user_salaqy = int(user_salaqy)
while True:
user_choice = input("请输入要购买的商品列表")
if user_choice.isdigit():#isdigit()函数的作用是:判断值是否为整数型
user_choice = int(user_choice)#如果输入的是整数值就转换成int类型,这样即让整数型的值变成了int 也不影响原来接收的数据类型
if user_choice < len(product_list) and user_choice >=0:#len() 函数 是返回列表的最大下标。
price = product_list[user_choice]
if user_salaqy >= price[1]:
shoppingcar.append(price[0])
total += price[1]
user_salaqy -= price[1]
print("商品\033[33;1m%s\033[0m已购买,当前余额为\033[31;1m%s\033[0m"%(price[0],user_salaqy))
else:
print("当前余额\033[31;1m%s\033[0m不足购买\033[34;1m%s\033[0m商品,退出购物请按q"%(user_salaqy,price[0]))
else:
print("当前输入的编码%s找不到对应的商品,请重新输入:"%(price[0]))
elif user_choice == 'q':
print("已退出购物,当前购买商品有:\033[31;1m%s\033[0m,共记:\033[31;1m%s\033[0m元,余额为:\033[31;1m%s\033[0m"%(shoppingcar,total,user_salaqy))
exit()
else:
print("输入格式错误:请从新输入")
输出结果,基本达到要求。