购物车:
1.导入时间模块
2.物品清单goods_lst
3.充钱数
4.定义购物车
一: 充值:
def recharge():
1.请输入充值金额
2.判断是否是纯数字
3.字符串强转int
4.充值成功,否则失败
二: 加载商品
def loading():
1.打印加载中…
2.延迟1秒
三: 展示商品
def show_goods():
1.用enumerate可以展示带有序号
2.通过 “序号”+商品名称+"价格 显示出来
四: 添加购物车
def add_car(num):
1.判断:如果num 在字典中存在,说明已经购买过了,只需要在amount这个数量值上面加1,
如果num 不在字典中,说明是第一次购买,那么就把对应的键值对添加到字典中即可
五: 报错提示
def error():
1.答应报错信息
六: 展示购物车
def show_car(num):
1.打印要展示的消息
七: 结算价格
def balance():
1.total = 0,没购买之前价格为0
2.打印购物车提示消息: 您购物车的具体商品如下:
3.添加序列号
4.商品总价= 商品单价 * 商品数量
5.计算总价格
八: 购买成功
def success(money,total):
1.打印消费价格及余额
九: 删除商品
def del_goods(money,total):
1.打印余额不足,请删除某些商品
2.请输入要删除的序号
3.判断是否是纯数字
4.字符串强转int
5.判定输入的序号在购物车的范畴中,才能够删除
6.每次调用数量减1
7.如果数量减到0 , 直接在购物车删除键值对
8.如果输入的序号不正确,提示错误
9.如果输入的不是字符串,提示错误
十: 主函数,进行统一调用
def main():
1.调用充值
2.调用加载
3.调用展示商品
开始购物:
sign = True
while sign:
1.请输入要购买的商品序号
2.if判断是否是纯数字
3.字符串强转int
4.序号大于等于1 小于等于goods_lst物品清单的长度
5.添加到购物车,展示购物车
6.否则错误
7.elif 输入的消息是 “N” 结算
8.循环while True:
9.调用total = balance() ,判断如果充值的钱小于结算价格,删除商品,否则购买成功
10.elif 输入的是q ,退出,欢迎下次再来
11.else 错误!
12.调用main()
代码:
### 购物车
import time
goods_lst = [
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
]
money = 0
car = {}
# 充值
def recharge():
global money
while True:
str_num = input("请充值吧,大哥")
if str_num.isdecimal():
num =int(str_num)
money = num
print("恭喜你 充值成功{}元".format(money))
break
else:
print("充值失败,非数字")
# 加载商品
def loading():
print("加载中..")
time.sleep(1)
# 展示商品
def show_goods():
it = enumerate(goods_lst,start=1)
strvar = "{}".format("商品名称").center(18)
print("序号"+strvar+"价格")
for k,v in it:
v["num"] = k
strvar = "{v[num]:<10}{v[name]:<12}{v[price]}".format(v=v)
print(strvar)
# 添加购物车
def add_car(num):
if num in car:
car[num]["amount"] += 1
else:
car[num] = {"name":goods_lst[num-1]["name"],"price":goods_lst[num-1]["price"],"amount":1}
print(car)
# 报错提示
def error():
strvar = """
**************************************************
* 您输入的选项不存在 , 请重新输入 *
**************************************************
"""
print(strvar)
time.sleep(1)
# 展示购物车
def show_car(num):
print("**************************************************")
print("您选择的商品具体信息:")
print("*-商品名称:{}".format(car[num]["name"]))
print("*-商品单价:{}".format(car[num]["price"]))
print("*-商品数量:{}".format(car[num]["amount"]))
print("已成功添加到购物车~ 请继续shopping ~")
print("**************************************************")
# 结算价格
def balance():
total = 0
print("[-------------------您购物车的具体商品如下:-------------------]")
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
# 成功购买
def success(money,total):
print("[一共:{}元]".format(total))
print("[您已经成功购买以上所有商品 , 余额还剩{}元,感谢您下次光临~]".format(money-total))
# 删除商品
def del_goods(money,total):
print("余额不足,还差{}元,请忍痛割爱,删除某些商品".format(total-money))
num = input("[-------------------请输入要删除的商品序号:-------------------]")
if num.isdecimal():
num = int(num)
if num in car:
car[num]["amount"] -= 1
if not car[num]["amount"]:
car.pop(num)
else:
error()
else:
error()
# 主函数,进行统一调用
def main():
recharge()
loading()
show_goods()
sign = True
while sign:
num = input("请输入您要购买的商品")
if num.isdecimal():
num = int(num)
if 1 <= num <= len(goods_lst):
add_car(num)
show_car(num)
else:
error()
elif num.upper() == "N":
while True:
total = balance()
print(total)
if money < total:
del_goods(money,total)
else:
success(money,total)
sign = False
break
elif num.upper() == "Q":
print("欢迎下次再来~")
sign = False
else:
error()
# 主函数的调用
main()