作业:
1. 用户先给自己的账户充钱:比如先充3000元。
2. 页面显示 序号 + 商品名称 + 商品价格,如:
电脑 1999
鼠标 10
…
n 购物车结算
3. 用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。
4. 如果用户输入的商品序号有误,则提示输入有误,并重新输入。
5. 用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。
6. 用户输入Q或者q退出程序。
7. 退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少。
message = """ 电脑 1999 鼠标 10 耳机 388 n 购物车结算 """ item_dic = {1: "电脑", 2: "鼠标", 3: "耳机"} # 创建商品名称字典 price_dic = {1: 1999, 2: 10, 3: 388} # 创建商品价格字典 # 依据商品名称字典创建购物车商品名称与商品数量字典 item_num_dic = {} for i in range(len(item_dic.keys())): defaul_num = [0] * len(item_dic.keys()) item_num_dic.setdefault(list(item_dic.values())[i], defaul_num[i]) total_budget = 0.0 # 购物车商品总计金额 item_name = [] # 购物车商品名称列表 my_purse = input("请输入存入金额:") print(message) item_num = input("请输入需要购买商品的编号:") while True: if item_num == "n": if total_budget <= float(my_purse): print("已购买商品:") for i in range(len(item_name)): print(str(i + 1) + ". " + item_name[i] + " " + str(item_num_dic[item_name[i]])) print("总计:%f" % total_budget) print("余额:%f" % (float(my_purse) - total_budget)) break else: item_num = input("已超预算,请删减购物车产品:") # 当输入编号有效、超出预算且该商品购物车数量为1时,购物列表删掉该商品、商品数量减1、预算减去相应商品价格 if item_dic[int(item_num)] in item_name and total_budget > float(my_purse) and \ item_num_dic[item_dic[int(item_num)]] == 1: item_num_dic[item_dic[int(item_num)]] -= 1 total_budget -= price_dic[int(item_num)] item_name.pop(int(item_num) - 1) # 当减去一个商品后,预算在可使用范围内时,结算并输出相应购物信息(切记退出循环) if total_budget <= float(my_purse): print("已购买商品:") for i in range(len(item_name)): print(str(i + 1) + ". " + item_name[i] + " " + str(item_num_dic[item_name[i]])) print("总计:%f" % total_budget) print("余额:%f" % (float(my_purse) - total_budget)) break # 当减去一个商品后,还超预算,继续删减产品 else: item_num = input("请继续删减购物车产品:") # 当输入编号有效、超出预算且该商品购物车数量大于1时,购物列表不变、对应商品数量减1、预算减去相应商品价格 elif item_dic[int(item_num)] in item_name and total_budget > float(my_purse) and \ item_num_dic[item_dic[int(item_num)]] > 1: item_num_dic[item_dic[int(item_num)]] -= 1 total_budget -= price_dic[int(item_num)] # 判断当减去一个商品后,预算在可使用范围内时,结算并输出相应购物信息(切记退出循环) if total_budget <= float(my_purse): print("已购买商品:") for i in range(len(item_name)): print(str(i + 1) + ". " + item_name[i] + " " + str(item_num_dic[item_name[i]])) print("总计:%f" % total_budget) print("余额:%f" % (float(my_purse) - total_budget)) break # 当减去一个商品后,还超预算,继续删减产品 else: item_num = input("请继续删减购物车产品:") # 直至不再超预算(切记退出循环) elif item_dic[int(item_num)] in item_name and total_budget <= float(my_purse): for i in range(len(item_name)): print("已购买商品:") print(str(i + 1) + ". " + item_name[i] + " " + str(item_num_dic[item_name[i]])) print("总计:%f" % total_budget) print("余额:%f" % (float(my_purse) - total_budget)) break # 特殊情况:当输入参数无效时,提示重新输入 elif item_dic[int(item_num)] not in item_name: item_num = input("内容有误,请重新输入:") elif item_num in str(item_dic.keys()): message1 = """ ----购物车信息---- %s已添加到您的购物车,单价为%.2f""" % (item_dic[int(item_num)], price_dic[int(item_num)]) print(message1) if item_dic[int(item_num)] in item_name: item_num_dic[item_dic[int(item_num)]] += 1 # 若已有该产品,则只增加该产品购买数量 else: item_name.append(item_dic[int(item_num)]) # 若没有该产品,则将该产品添加到购买列表 item_num_dic[item_dic[int(item_num)]] += 1 # 同时增加产品购买数量 total_budget += price_dic[int(item_num)] # 累计消费额 item_num = input("请继续输入商品编号:") # 继续购买 elif item_num.upper() == "Q": print("已购买商品:") for i in range(len(item_name)): print(str(i + 1) + ". " + item_name[i] + " " + str(item_num_dic[item_name[i]])) print("总计:%f" % total_budget) print("余额:%f" % (float(my_purse) - total_budget)) break else: item_num = input("输入有误,请重新选择:")