疯狂Python讲义Unit4:supermarket

#!/usr/bin/python3
'''
控制台超市系统
1、仓库是字典格式,key是条码,value是商品的属性元组:包含条码、名字、单价
2、购买清单是二维列表格式,子列表是每款商品的[条码,数量]
2、打印商品列表:详细信息
3、增删改查函数 :购买清单
4、while循环判断增、删、改、查 然后输出清单
'''
# 定义仓库词典,存放商品
warehouse=dict()
# 初始化仓库
def init_warehouse():
    # 初始化商品清单
    good1=('001','S600',1000000)
    good2=('002','T300',20000)
    good3=('003','M1',180000)
    good4=('004','k300',190000)
    good5=('005','XPERIA',6000)
    # 入库
    warehouse[good1[0]]=good1
    warehouse[good2[0]]=good2
    warehouse[good3[0]]=good3
    warehouse[good4[0]]=good4
    warehouse[good5[0]]=good5
# 遍历打印商品清单
def graph_goods():
    print('商品清单:')
    print("%13s%40s%10s" % ("条码", "商品名称", "单价"))
    for i in warehouse.values():
        print('%15s%40s%12s'%i)
# 打印购物详细清单
shopList=[] # 购买清单是二维列表格式,子列表是每款商品的[条码,数量],通过购买清单整合成最终的购物详细清单
def graph_list():
    print("=" * 100)
    if not shopList:
        print('请添加购买商品')
    else:
        title = "%-5s|%15s|%40s|%10s|%4s|%10s" % \
            ("ID", "条码", "商品名称", "单价", "数量", "小计")
        print(title)
        print("-" * 100)
        # 定义总价
        sum=0
        # 定义id
        id = 0
        for i,item in enumerate(shopList):
            # 商品列表序号id、条码、数量
            id += 1
            code=item[0]
            num=item[1]
            # 从仓库中找到商品名、单价
            name=warehouse[code][1]
            price=warehouse[code][2]
            # 单品总价
            amount=price*num
            # 总价
            sum+=amount
            line = "%-5s|%17s|%40s|%12s|%6s|%12s" % \
                (id, code, name, price, num, amount)
            print(line)
        print("-" * 100)
        print("                          总计: " , sum)
    print("=" * 100)
# 增加购买商品操作
def add():
    code=input("请输入购买商品条码:\n")
    if code not in warehouse.keys():
        print("商品不存在")
        return
    num=input("请输入购买数量")
    # 将购买的商品及数量添加到购买清单中
    shopList.append([code,int(num)])
# 改变购买商品数量,即修改购买清单list中的数量
def edit():
    id = input("请输入要修改的购物明细项的ID:\n")
    # id减1得到购买清单的索引,即哪款商品
    index = int(id) - 1
    # 提示输入新的购买数量
    number = input("请输入新的购买数量:\n")
    # 修改shopList里面的num
    shopList[index][1] = int(number)
# 删除购买清单的一个元素。
def delete():
    id = input("请输入要删除的购物明细项的ID: ")
    index = int(id) - 1
    # 直接根据索引从购买清单里面删除
    del shopList[index]
# 结算方法
def payment():
    # 打印清单
    graph_list()
    print('\n'*3) # 空三行
    print('购物结束')
    # 通过os模块中的_exit(0)方法来控制退出
    import os
    os._exit(0)
# 操作词典中存储的value是方法,需要省略(),否则会直接执行
cmd_dict={'a':add,'e':edit,'d':delete,'p':payment,'g':graph_goods}
# 给出提示命令
def show_command():
    cmd=input('请输入操作命令:\n'+'添加(a) 修改(e) 删除(e) 结算(p) 显示车市商品(g)')
    if cmd not in cmd_dict:
        print('输入有误')
    else:
        cmd_dict[cmd]()

# main
init_warehouse()
graph_goods()
# 显示清单和操作命令提示
while True:
    graph_list()
    show_command()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值