简易版购物车:
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['数量']))
测试