题目
作业需求:
1. 用户先给自己的账户充钱:比如先充3000元。
2. 页面显示 序号 + 商品名称 + 商品价格,如:
1 电脑 1999
2 鼠标 10
…
n 购物车结算
3. 用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。
4. 如果用户输入的商品序号有误,则提示输入有误,并重新输入。
5. 用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除某商品,
直至可以购买,若充值的钱数充足,则可以直接购买。
6. 用户输入Q或者q退出程序。
7. 退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少。
goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ]
1 goods = [{"name": "电脑", "price": 1999}, 2 {"name": "鼠标", "price": 10}, 3 {"name": "游艇", "price": 20}, 4 {"name": "美女", "price": 998}, ] 5 shopping_car = {} # 存储商品 6 shopping_count = {} # 统计购物车各商品数量 7 for i in range(len(goods)): 8 shopping_count.setdefault(goods[i]['name'], 0) 9 money_input = int(input('购买商品前,请为您的账户充值,充值金额为(单位:元):').strip()) 10 Flag = True 11 while Flag: 12 print('*****************************商品具体展示:****************************') 13 for count_i in goods: 14 print(goods.index(count_i) + 1, count_i['name'], count_i['price']) 15 print('**********************************************************************') # 打印商品 16 # 用户输入选择的商品序号,然后打印商品名称及商品价格, 并将此商品,添加到购物车,用户还可继续添加商品。 17 user_input = input('输入商品序号:\n(输入Q或者q退出程序): \n(输入n结账): ').strip() 18 if user_input.isdigit(): 19 user_input = int(user_input) 20 if 0 < user_input <= len(goods): # 输入的是 1 2 3 4 21 print(goods[user_input - 1]['name'], goods[user_input - 1]['price']) # 打印商品及价格 22 shopping_car[goods[user_input - 1]['name']] = goods[user_input - 1]['price'] # 购物车里面填充商品名称与价格 23 for key in shopping_car.keys(): 24 if key in goods[user_input - 1]['name']: # 判断输入的键是否在shopping_car内 25 shopping_count[key] += 1 # 若存在 shopping_count +1 26 print(shopping_car) 27 print(shopping_count) 28 else: 29 print('Sorry!您输入数字不在规定范围内,请重新输入!') 30 elif user_input == 'Q' or user_input == 'q': 31 print('亲!没有您满足的商品?我们会用诚信打动您!期待您下次光临,Bye!') 32 Flag = False 33 # 5. 用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除某商品, 34 # 直至可以购买,若充值的钱数充足,则可以直接购买。 35 elif user_input == 'n': 36 total_value = 0 37 # print(shopping_car, shopping_count) # 打印商品,数量,单价 38 for key_1 in shopping_car.keys(): 39 for key_2 in shopping_count.keys(): # 购物车总价 40 if key_1 == key_2: 41 total_value = total_value + shopping_count[key_2] * shopping_car[key_1] 42 print('total_value = ', total_value) 43 # 当充值的钱不足时,即购物车的值大于已充值的钱 44 while total_value > money_input: 45 total_value = 0 46 user_input_again = input('请删除要删减的商品内容,每次删减一次(1:电脑,2:鼠标,3:游艇,4:美女,5:...)') 47 user_input_again = int(user_input_again) 48 print('**********************************************************************') 49 for key in shopping_car.keys(): 50 if key == goods[user_input_again - 1]['name']: # 键相等 51 if shopping_count[key] == 0: # 购物车数量为零,保持不变 52 shopping_count[key] = shopping_count[key] 53 else: 54 shopping_count[key] -= 1 # 购物车数量不为0,数量减1 55 print('商品数量:', shopping_count) 56 for key_1 in shopping_car.keys(): 57 for key_2 in shopping_count.keys(): 58 if key_1 == key_2: # 购物车shopping_car与shopping_count键相等 59 total_value = total_value + shopping_count[key_2] * shopping_car[key_1] # 计算删减后的购物车总价格 60 print('购物车剩余物品价值:', total_value, '元') 61 print('**********************************************************************') 62 # 依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少 63 print('*******************************商品清单*******************************') 64 print('此次用户购买的商品,数量,单价共计:') 65 print(shopping_car) 66 print(shopping_count) 67 print('此次购买商品共消费:%s 元,且账户余额共计:%s 元' % (total_value, money_input - total_value)) 68 print('谢谢光临,请慢走!') 69 print('*********************************End**********************************') 70 Flag = False 71 else: 72 print('Sorry!您输入数字含有其他字符,请重新输入!')