• 项目分享:模拟购物车


    项目一:模拟购物车

    声明:

    项目代码纯粹本人自己编写,无任何抄袭、转载等情况,所以写的很low,仅供大家参考

    项目要求:

    1. 用户先给自己的账户充钱:比如先充3000元。

    2. 有如下的一个格式:

      goods = [
      	{"name": "电脑", "price": 1999},
          {"name": "鼠标", "price": 10}, 
          {"name": "游艇", "price": 20},
          {"name": "美女", "price": 998}, 
          ]
      
    3. 页面显示序号 + 商品名称 + 商品价格,如:1 电脑 1999

    4. 用户输入选择的商品序号,然后打印商品名称及商品价格, 并将此商品,添加到购物车(自己定义购物车),用户还可继续添加商品。

    5. 如果用户输入的商品序号有误,则提示输入有误,并重新输入。

    6. 用户输入N为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。

    7. 用户输入Q或者q退出程序。

    8. 退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少,并将购买信息显示。

    源码:

    goods = [{"name": "电脑", "price": 1999},
             {"name": "鼠标", "price": 10},
             {"name": "游艇", "price": 20},
             {"name": "美女", "price": 998}, ]
    shopping_trolley = []  # 购物车
    bill = []  # 结算账单
    print("欢迎来到商城".center(18, "*"))
    while True:
        money = input("请充值金额:")
        if money.isdigit() and int(money) > 0:  #  必须是大于0的整数
            print(f"本次您充值的金额为:{money}元")
            print("商品信息".center(18, "*"))
            for i, el in enumerate(goods, 1):  # 枚举解包出序号
                value_lst = list(el.values())
                print(f"序号:{i} 商品:{value_lst[0]} 价格:{value_lst[1]}")
            while True:
                number = input("请输入你想购买的商品序号(按N结算,按Q退出):")
                if number.upper() != "Q":
                    if number.isdigit() and 0 < int(number) < len(goods) + 1:
                        number = int(number)
                        commodity = (number, goods[number - 1]["name"], goods[number - 1]["price"])  # 选中的物品打包
                        shopping_trolley.append(commodity)  # 加到购物车中
                        print(f"商品:{goods[number - 1]['name']} 价格:{goods[number - 1]['price']}")  # 格式化输出购买的商品
                    elif number.upper() == "N":  # 结算
                        if shopping_trolley == []:
                            print("购物车中无商品,请重新选择商品!")
                        else:
                            print("
    "+"您已选择以下商品".center(18, "*"))
                            price_sum = 0  # 总价格初始化
                            remove_repeat = set(shopping_trolley)  # 去重购物车
                            for el in remove_repeat:
                                time = shopping_trolley.count(el)  # 计算重复商品出现的次数
                                num, name, price = el  # 解包元组
                                print(f"商品:{name} 价格:{price} 数量:{time}")
                                price_sum = price_sum + price * time  # 计算价格
                            while True:
                                if price_sum > int(money):
                                    print("
    您充值的金额不足,请选择删除购物车中的商品!")
                                    print("
    "+"购物车".center(18, "*"))
                                    choose_num = []
                                    remove_repeat = set(shopping_trolley)  # 重复代码,目的再次展示一边购物车的东西
                                    for el in remove_repeat:
                                        time = shopping_trolley.count(el)
                                        num, name, price = el
                                        choose_num.append(num)  # 将购物车中的商品序号都加进去,一会删除时判断用
                                        print(f"序号:{num} 商品:{name} 价格:{price} 数量:{time}")  # 再次展示一边购物车的东西
                                    number = input("请输入你想删除的商品序号:")
                                    if number.isdigit() and int(number) in choose_num:  # 判断输入的序号在不在购物车中
                                        if len(shopping_trolley) > 1:
                                            for i in range(len(shopping_trolley)):
                                                if shopping_trolley[i][0] == int(number):
                                                    price_sum = price_sum - shopping_trolley[i][2]
                                                    shopping_trolley.pop(i)  # 删除
                                                    break  # 每次只删一个,所以不存在循环列表删不干净的问题
                                        else:  # 此时购物车中只剩一件商品
                                            shopping_trolley.clear()  # 直接清空就好了
                                            print("购物车中无商品!")
                                            price_sum = 0  # 商品总价清零
                                            break
                                    else:
                                        print("您输入的序号有误,请重新输入!")
                                else:
                                    choose = input("您的金额充足,确认是否购买(是/否)?")
                                    if choose == "是":
                                        print("购买成功!")
                                        for el in shopping_trolley:
                                            bill.append(el)  # 将结算的商品加到账单里去
                                        shopping_trolley.clear()  # 清空购物车
                                        price_sum = 0  # 商品总价归零
                                        break
                                    elif choose == "否":
                                        shopping_trolley.clear()
                                        print("已清空购物车!")
                                        break
                                    else:
                                        print("您的输入有误,请重新输入!")
                    else:
                        print("您输入的序号有误,请重新输入!")
                else:
                    print("结算清单".center(18, "*"))
                    print("本次您购买的商品如下:")
                    shopping_trolley.clear()
                    price_sum = 0
                    remove_repeat = set(bill)  # 账单去重
                    for el in remove_repeat:
                        time = bill.count(el)  # 计算账单中重复商品的数量
                        num, name, price = el
                        print(f"商品:{name} 数量:{time} 价格:{price}")
                        price_sum = price_sum + price * time
                    money = int(money) - price_sum  # 剩余金额
                    print(f"本次共消费:{price_sum}元
    账户余额为:{money}元
    已清空您的购物车,欢迎您下次光临!")
                    break
            break
        else:
            print("输入金额有误,请重新输入!")
    
  • 相关阅读:
    storm原理写得比较好的文章
    maven设置jdk版本
    项目中记录log4j记录日志
    eclipse jadeclipse配置
    Maven使用说明
    crond不执行原因分析
    空调遥控器图标含义
    window7开放端sqlserver端口
    servlet仿struts参数注入
    cocos 2dx-js3.5整合anySDK
  • 原文地址:https://www.cnblogs.com/tianlangdada/p/11568095.html
Copyright © 2020-2023  润新知