day2-购物车

作业:
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("输入有误,请重新选择:")

 

转载于:https://www.cnblogs.com/Isabelle-gulingjing/p/9864785.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值