# 购物车
# 功能要求:
# 要求用户输入总资产,例如:2000
# 显示商品列表,让用户根据序号选择商品,加入购物车
# 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
# 可充值、某商品移除购物车
goods = [{"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ] dic1, dic2, dic3, dic4 = goods # 拆分为各商品字典 name = [dic1["name"], dic2["name"], dic3["name"], dic4["name"]] # 商品名列表(从各商品字典取去商品名) price = [dic1["price"], dic2["price"], dic3["price"], dic4["price"]] # 商品价格列表(与商品名列表对应) # dic_g = {} # 定义购物车字典(未使用) list_g = [] # 购物车商品列表 price_g = [] # 购物车商品价格列表 price_s = 0 # 购物车商品总价 mo = input("请输入您的总资产(¥):") tag = True while tag: if mo.isdigit(): # 判断金额是否为整数 mo = int(mo) # 列出商品编号和名称 print(" ""输入商品序号添加至购物车:") for i in range(0, len(name)): print(i + 1, name[i]) print(len(name) + 1, "退出购物") print(len(name) + 2, "<<结算>>") # 购物选择 tag_n = True while tag_n: n = int(input(' '"请选择商品>>>")) if n in range(1, len(name) + 1): list_g.append(name[n - 1]) # 加入购物车商品列表(!!!如果换成从字典取值,则不能显示重复购买的商品) price_g.append(price[n - 1]) # 加入购物车商品价格列表(可不加,直接加价格) price_s += price[n - 1] # 每添加一次购物车,购物总价也增加 print("购物车已添加:", list_g) print("总价格为:", price_s) # 打印总价格 elif n == len(name) + 1: print("已退出购物!") tag_n = False tag = False elif n == len(name) + 2: if len(list_g) == 0: print("购物车无商品!") continue # 购物车有商品结算 tag_g = True while tag_g: # 资产不足 if mo < price_s: print(" ""资产不足!充值或删除商品:"" " "1 充值"" " "2 删除商品"" " "3 退出购物") m = int(input("请选择>>")) tag_m = True while tag_m: # 充值 if m == 1: mo_add = int(input("请输入金额:")) mo += mo_add print("总资产为:", mo) print("总价格为:", price_s) tag_m = False # 删除购物车商品 elif m == 2: print(" ""购物车已添加:", list_g) print("选择要删除购物车的商品编号>>>") for i in range(0, len(name)): print(i + 1, name[i]) print(len(name) + 1, "返回上一层") # 购物车删除,总价格减除 tag_n1 = True while tag_n1: n1 = int(input("请选择>")) if n1 in range(1, len(name) + 1) and name[n1 - 1] in list_g: list_g.remove(name[n1 - 1]) # 移除购物车商品列表 price_g.remove(price[n1 - 1]) # 移除购物车商品价格列表(可不加,直接减总价) price_s = price_s - price[n1 - 1] if len(list_g) == 0: # 判断购物车是否被删空 print(" ""购物车无商品!") mo = str(mo) # 无商品,返回重新购物 Enter = input("<<<按Enter添加购物车>>>") tag_n1 = False tag_m = False tag_g = False tag_n = False else: print(" ""购物车剩余:", list_g) print("总资产为:", mo) print("总价格为:", price_s) tag_n1 = False elif n1 == len(name) + 1: tag_n1 = False tag_m = False else: print("购物车没有此商品!") elif m == 3: print("已退出购物!") tag_m = False tag_g = False tag_n = False tag = False else: print("输入错误!") # 资产充足 else: enter = input("<<资产充足,按Enter结算>>") mo -= price_s print("资产余额:", mo) print("购物成功!") tag_g = False tag_n = False tag = False else: print("输入错误!") else: print("输入金额错误!")