完成一个购物车程序
商品信息在shopping.txt文件中存储的,存储形式: name price 电脑 1999 鼠标 10 游艇 20 美女 998
要求:
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,退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少,并将购买信息写入文件。
1 while True: 2 money = input("请输入总资产:").strip() 3 if money.isdecimal(): 4 break 5 else:print("总资产输入错误,请重新输入") 6 money = int(money) 7 money1 = money 8 buy = [] 9 goods = [{"name": "电脑", "price": 1999}, 10 {"name": "鼠标", "price": 10}, 11 {"name": "游艇", "price": 20}, 12 {"name": "美女", "price": 998}, 13 ] 14 pr = "price" 15 na = "name" 16 while True: 17 print("请选择如下商品".center(50,"*")) 18 for i,j in enumerate(goods,1): 19 print("编号{}\t\t商品名称:{}\t\t商品价格{}".format(i,j[na],j[pr])) 20 print("*"*55) 21 number = input("请输入要买商品的编号(充值请按C/c,删除请按D/d,退出请按Q/q):").strip() 22 if number.isdecimal(): 23 number = int(number) 24 if number <= len(goods): 25 if goods[number-1][pr] <= money: 26 buy.append(goods[number-1]) 27 money -= goods[number-1][pr] 28 print("已经添加购物车 %s ,剩余总资产 %d" % (goods[number-1][na],money)) 29 else:print("账户余额不足") 30 else:print("编号超出范围") 31 elif number.upper() == "Q": 32 if buy: 33 print("您购买的商品有:") 34 for k in buy: 35 print(k[na]) 36 print("总消费 %d" % (money1-money)) 37 else: 38 print("您购物车为空") 39 break 40 elif number.upper() == "C": 41 while True: 42 money2 = input("请输入充值金额:") 43 if money2.isdigit(): 44 money2 = int(money2) 45 money += money2 46 print("充值成功,剩余总资产 %d" % money) 47 break 48 else:print("充值金额不合法") 49 elif number.upper() == "D": 50 if buy: 51 print("购物车商品".center(50, "*")) 52 for l,m in enumerate(buy,1): 53 print("编号{}\t\t商品名称:{}\t\t商品价格{}".format(l,m[na],m[pr])) 54 print("*"*55) 55 delate = input("请输出要删除商品的编号").strip() 56 if delate.isdigit(): 57 delate = int(delate) 58 if delate <= len(buy): 59 del buy[delate-1] 60 print("已删除成功") 61 else:print("输出的编号超出范围") 62 else:print("输出的编号不合法") 63 else:print("购物车为空") 64 else:print("输出的参数错误")