import time
money = 0
goods_lst = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
{"name": "风油精", "price": 30},
]
# 定义购物车字典
car = {}
# 1:{电脑 ... }
# 2:{鼠标 .... }
def recharge():
global money
while True:
num = input("请充值吧,大哥")
if num.isdecimal():
money = int(num)
print("恭喜你~ 充值成功{}元人民币".format(money))
break
else:
print("充值失败,非数字.")
def loading():
print("加载商品中 ... ")
time.sleep(1)
def show_goods():
strvar = "{}".format("商品名称").center(18)
print("序号" + strvar + "价格")
for k, v in enumerate(goods_lst, start=1):
v['num'] = k
strvar = "{v[num]:<10}{v[name]:<12}{v[price]}".format(v=v)
print(strvar)
def error():
strvar = '''
**************************************************
* 您输入的选项不存在 , 请重新输入 *
**************************************************
'''
print(strvar)
time.sleep(1)
def add_car(num):
"""如果在购物车中,在数量上加1,如果不在购物车中,就添加新商品"""
if num not in car:
car[num] = {"name": goods_lst[num - 1]["name"], "price": goods_lst[num - 1]["price"], "amount": 1}
else:
car[num]["amount"] += 1
print(car)
def show_car(num):
# print(car)
print("*" * 50)
print("您选择的商品具体信息:")
print("*-商品名称:{}".format(car[num]["name"]))
print("*-商品单价:{}".format(car[num]["price"]))
print("*-商品数量:{}".format(car[num]["amount"]))
print("已成功添加到购物车~ 请继续shopping ~")
print("*" * 50)
def balance():
total = 0
print("[-------------------您购物车的具体商品如下:-------------------]")
# 序号2: 商品名称:鼠标 商品单价:10 商品数量:1 此商品总价:10
for k, v in car.items():
v["num"] = k
v["total"] = v["price"] * v["amount"]
total += v["total"]
strvar = "序号{v[num]}: 商品名称:{v[name]} 商品单价:{v[price]} 商品数量:{v[amount]} 此商品总价:{v[total]}".format(v=v)
print(strvar)
return total
# total 一共花的钱,money 充值金额
def success(total, money):
print("[一共:{}元]".format(total))
print("[您已经成功购买以上所有商品 , 余额还剩{}元,感谢您下次光临~]".format(money - total))
time.sleep(1)
def del_goods(total, money):
print("余额不足,还差{}元,请忍痛割爱,删除某些商品".format(total - money))
sn = input("[-------------------请输入要删除的商品序号:-------------------] ")
if sn.isdecimal():
sn = int(sn)
if sn in car:
car[sn]["amount"] -= 1
if not car[sn]["amount"]:
car.pop(sn)
else:
error()
else:
error()
def myexit():
print("[============== 欢迎下次光临: ==============]")
time.sleep(1)
# N结算 Q退出 序号购买
# 主函数,进行统一调用
def main():
# 充值
recharge()
# 加载中
# loading()
# 展示商品
show_goods()
# 开始购物
sign = True
while sign:
num = input("请输入您要购买的商品")
if num.isdecimal():
num = int(num)
if (1 <= num) and (num <= len(goods_lst)):
add_car(num)
else:
print("输入有误,没有该序号的商品,请重新输入")
continue
# 展示购物车
show_car(num)
elif num.upper() == "N":
while True:
# 开始结算
total = balance()
if total > money:
# 删除商品
del_goods(total, money)
else:
# 购买成功
success(total, money)
sign = False
break
print(total)
elif num.upper() == "Q":
# 退出
myexit()
sign = False
else:
error()
main()
-
本文作者: 问题不大、
本文链接: https://www.cnblogs.com/noproblems/p/16993638.html