模拟实现商品加购物车

 简易版购物车:

1) 商品有列表存储,每个商品的属性用字典存储

2)用户输入商品编号,以及商品数量,这些商品被加入购物车

3)相同的商品,在购物车进行合并,数量相加

3)用户退出挑选商品,自动进行结账

4)结账之后,商品列表中对应商品的数量减少,同时商品列表输出在控制台上

# -*- coding: utf-8 -*- 
# @File : 简易购物车.py 
# 描述 : 使用字典,列表等简单模拟商品加入购物车
# @Time : 2020/5/28 19:05 
# @Author : 崔
# @versions : 1.0

# 列表存放商品,每个商品的属性用字典存储

goods = [{'编号': 'B686', '名称': '联想电脑', '价格': 6000, '数量': 300},
         {'编号': 'B903', '名称': '外星人电脑', '价格': 12000, '数量': 100},
         {'编号': 'B987', '名称': '惠普电脑', '价格': 4599, '数量': 1000},
         {'编号': 'B990', '名称': '小米笔记本', '价格': 5000, '数量': 239}]
carts = []  # 购物车
# 展示商品列表
while True:
    print("{:<10}\t{:<10}\t{:>6}\t{:>10}".format('编号', '名称', '价格', '数量'))
    for good in goods:
        print("{:<10}\t{:<10}\t{:<10}\t{:<10}".format(good['编号'], good['名称'], good['价格'], good['数量']))
    Id = input("请输入Id选择商品,输入0退出:")
    # 退出
    if Id == '0':
        break

    # 如果输入的编号不在商品列表里,重新输入
    for good in goods:
        if Id == good['编号']:
            stock = good['数量']  # 显示当前选择商品的数量
            break
    else:
        print("你输入的商品不存在,请重新选择商品")
        continue  # 重新开始下一次循环

    if stock == 0:
        print("商品已售空,请等待商品上架,重新选择")
        continue
    while 1:  # 死循环,直到输入正确的数量
        num = int(input("请输入你选择的商品的数量:"))
        if num < 0 or num > stock:
            print("你输入的数量不合法")
            continue
        else:
            break

    for good in carts:
        if Id == good['编号']:
            good['数量'] += num
            break
    else:
        for good in goods:  # 用于遍历对应编号的商品名称,存到购物车中
            if good['编号'] == Id:
                d1 = {'编号': Id, '名称': good['名称'], '数量': num}
        carts.append(d1)

# 结账 价格*数量之和
money = 0  # 总价初始为0

# 双重循环,用于查询价格,计算总价
for wares in carts:
    for good in goods:
        if wares['编号'] == good['编号']:
            money += good['价格'] * wares['数量']
            good['数量'] -= wares['数量']
            break
print(carts)  # 输出购物车的商品
print(f"你需要支付:{money}元钱")  # 需要支付的钱
# 输出当前商品列表中,商品的数量
print("{:<10}\t{:<10}\t{:>6}\t{:>10}".format('编号', '名称', '价格', '数量'))
for good in goods:
    print("{:<10}\t{:<10}\t{:<10}\t{:<10}".format(good['编号'], good['名称'], good['价格'], good['数量']))

 

 测试

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dmy20210205

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

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

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

打赏作者

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

抵扣说明:

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

余额充值