Python实现简单的购物车

思路:
    1.引导用户输入金额
    2.引导用户选择商品
    3.根据用户的选择将商品添加到购物车
    4.删除商品
    5.结算购物车,退出系统



# 购物车
# 商品名称作为key,商品数量作为value
shoppingcar = {}


# 添加商品
def addgoods(product, num):
    if num.isdigit():  # isdigit()如果字符串只包含数字则返回 True 否则返回 False。
        num = int(num)
        # 判断key是否存在
        if product not in shoppingcar:
            # 添加键值对
            shoppingcar[product] = num
        else:
            # 修改指定键的值
            shoppingcar[product] += num
        print("商品添加成功")
    else:
        print("数量输入有误")

# 删除商品
def delgoods(name, num):
    product = 0
    for key in shoppingcar:
        if key[0] == name:
            product = key
    if num.isdigit():
        num = int(num)
        if num >= shoppingcar[product]:
            for product in shoppingcar:
                if product[0] == name:
                    # 删除该商品的全部
                    shoppingcar.pop(product)
        else:
            # 删除该商品指定的数量【修改value值】
            shoppingcar[product] -= num

        print("商品删除成功")
    else:
        print("数量输入有误")


if __name__ == '__main__':
    print("**********欢迎进入自选超市**********")
    # 引导用户输入金额
    saving = input("请输入你的金额:")

    if saving.isdigit():
        saving = int(saving)
        while True:
            print("可以进行的操作如下:\n "
                  "0.添加商品  1.删除商品  2.结算购物车  3.退出超市")
            # 引导用户选择操作
            choice = input("请输入你需要进行的操作:")

            # 判断用户选择的序号
            if choice in ["0", "1", "2", "3"]:

                if choice == '0':
                    # 添加
                    # 存储商品的列表
                    product_list = [
                        ('book', 88),
                        ('iphone', 8888),
                        ('food', 100),
                        ('kindle', 500),
                        ('computer', 7000)
                    ]
                    # 展示商品内容
                    print("本商店的商品如下:")
                    for i, goods in enumerate(product_list):
                        print("%d:%s" % (i, goods))

                    # 引导用户选择商品
                    index = input("请输入你需要购买的商品编号:")

                    if index.isdigit():
                        index = int(index)
                        if 0 <= index <= len(product_list) - 1:
                            # 获取商品
                            product = product_list[index]

                            # 引导用户输入商品数量
                            num = input("请输入需要购买的%s的数量:" % (product[0]))

                            if int(num) * product[1] > saving:
                                print("金额不足,请充值")
                                saving += int(input("请输入需要充值的金额:"))
                                print("充值成功,余额为:%d" % saving)
                            else:
                                # 减去商品价格
                                saving -= int(num) * product[1]
                                # 将商品添加到购物车
                                addgoods(product, num)
                    else:
                        print("商品的编号输入有误")

                elif choice == '1':
                    # 删除
                    name = input("请输入需要删除的商品名称:")
                    num = input("请输入需要删除的商品的数量:")
                    for product in shoppingcar:
                        if product[0] == name:
                            # 添加金额
                            saving += int(num) * product[1]
                    delgoods(name, num)

                elif choice == '2':
                    # 结算购物车
                    print("----------你已经购买了如下商品----------")
                    for key,value in shoppingcar.items():
                        print("%s:%s"%(key,value))

                    # 清空购物车
                    shoppingcar.clear()
                    print("你还剩余%d元" % saving)

                else:
                    # 退出
                    print("欢迎再次光临")
                    break
            else:
                print("暂未开通此功能")
    else:
        print("金额输入有误,请重新输入")

测试运行结果:

**********欢迎进入自选超市**********
请输入你的金额:10000
可以进行的操作如下:
 0.添加商品  1.删除商品  2.结算购物车  3.退出超市
请输入你需要进行的操作:0
本商店的商品如下:
0:('book', 88)
1:('iphone', 8888)
2:('food', 100)
3:('kindle', 500)
4:('computer', 7000)
请输入你需要购买的商品编号:2
请输入需要购买的food的数量:50
商品添加成功
可以进行的操作如下:
 0.添加商品  1.删除商品  2.结算购物车  3.退出超市
请输入你需要进行的操作:1
请输入需要删除的商品名称:food
请输入需要删除的商品的数量:20
商品删除成功
可以进行的操作如下:
 0.添加商品  1.删除商品  2.结算购物车  3.退出超市
请输入你需要进行的操作:2
----------你已经购买了如下商品----------
('food', 100):30
你还剩余7000元
可以进行的操作如下:
 0.添加商品  1.删除商品  2.结算购物车  3.退出超市
请输入你需要进行的操作:3
欢迎再次光临

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值