# 模拟购物车:# 要求:# 1,用户先给自己的账户充钱:比如先充3000元。# 2,有如下的一个格式:# goods = [{"name": "电脑", "price": 1999},# {"name": "鼠标", "price": 10},# {"name": "游艇", "price": 20},# {"name": "美女", "price": 998},]# 3,页面显示 序号 + 商品名称 + 商品价格,如:# 1 电脑 1999# 2 鼠标 10# …## 4,用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,# 添加到购物车(自己定义购物车),用户还可继续添加商品。# 5,如果用户输入的商品序号有误,则提示输入有误,并重新输入。# 6,用户输入N为购物车结算,依次显示用户购物车里面的商品,数量及单价,# 若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。# 7,用户输入Q或者q退出程序。# 8,退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少。# 充值金额# a =0# b =int(input())f1 =0s2 =0my_list2 =[] #已经购买的商品列表def chongzhi(b): """ b:充值的金额 s2充值后余额 """global s2 s2 += bprint(f"充值后余额{s2}") return s2 goods = [{"name": "电脑", "price": 1999},{"name": "鼠标", "price": 10},{"name": "游艇", "price": 20},{"name": "美女", "price": 998}, ]my_list1 = [] # 商品列表初始for i, dic in enumerate(goods): a, b = list(dic.values()) # 利用字典键值对中的值转换成列表进行拆包print(i + 1, a, b) my_list1.append(list(dic.values()))# print(my_list1)my_buy = [] # 购物车列表my_buy_dic = {} for i, v in enumerate(my_list1): my_buy_dic[f"{i + 1}"] = v # 给字典 的键转换成数字型字符串 # {‘1‘: [‘电脑‘, 1999], ‘2‘: [‘鼠标‘, 10], ‘3‘: [‘游艇‘, 20], ‘4‘: [‘美女‘, 998]} # print(my_buy_dic.keys()) def add_buy(wupin): if wupin not in my_buy_dic.keys(): print("输入错误请重新输入") return else: # print(my_buy_dic[wupin])my_buy.append(my_buy_dic[wupin]) print("添加商品成功") print(f"购物车列表:{my_buy}") my_buy_settlement = {} for i in my_buy: if str(i) not in my_buy_settlement: my_buy_settlement.setdefault(str(i), 1) else: my_buy_settlement[str(i)] += 1# print(my_buy_settlement)for k, v in my_buy_settlement.items(): # print(eval(k),v)s = ‘ ‘.join(str(i) for i in eval(k)) print(s, v) return my_buydef buy_Settlement11(my_buy,s1): #s1 充值后的余额print(my_buy) my_buy_settlement = {} for i in my_buy: if str(i) not in my_buy_settlement: my_buy_settlement.setdefault(str(i), 1) else: my_buy_settlement[str(i)] += 1print(my_buy_settlement) count = 0for k,v in my_buy_settlement.items(): # values = ‘,‘.join([unicode(i) for i in value_list])count+=eval(k)[-1] * v print(count) if count > int(float((s1))): print("用户钱不足,请删减购物车,或者充值") return else: global f1 f1= s1 - count my_list2.extend(my_buy) print(f"结算后余额是{f1}元") return f"结算后余额是{f1}元"def del_my_buy(my_buy): print("删除购物车中商品开始") print(my_buy) if len(my_buy)!=0: my_buy.pop() else: print("购物车中已经没有商品了!") # print("删除购物车列表中最后一个商品后:") # print(f"购物车列表:{my_buy}")return my_buydef xunhuan(): while True: wupin = input("请用户输入商品序号:") if wupin.upper() == "Q": print("退出程序") if my_list2: print(f"购买的商品为:{my_buy}",f"余额{f1}元") else: print("您没有结算") return "退出程序"elif wupin.upper() == "N": print("开始结算") buy_Settlement11(my_buy,s2) elif wupin.upper()=="C": b =int(input()) chongzhi(b) elif wupin.upper()=="D": del_my_buy(my_buy) else: add_buy(wupin) def appstart(): xunhuan() appstart()
原文地址:https://www.cnblogs.com/niucunguo/p/12003084.html
时间: 2024-08-15 17:01:03