练习-模拟商城购物车

# 余额
Money = 10000

# 购物车列表
shopping_cart = []

# 商品列表,可以用list代替,用dict是为了练习
commodity = {
    '男装': 318,
    '女装': 218,
    '内衣': 118,
    '': 98,
    '箱包': 546,
    '配件': 342,
    '童装玩具': 32,
    '孕产': 998,
    '数码': 4999,
}


# 显示商品列表
def print_commodity():
    p_count = 0
    print('商品列表')
    for i in commodity:
        p_count += 1
        print('   %d:%s  价格:%d' % (p_count, i, commodity[i]))


# 显示购物车列表
def print_shopping_cart():
    p_count = 0
    print('购物车 总价:%d  余额:%d' % (sel_price(), Money))
    for i in shopping_cart:
        p_count += 1
        print('   %d:%s  价格:%d' % (p_count, i[0], i[1]))


# 删除购物车商品
def del_shopping_cart():
    while True:
        print_shopping_cart()
        select = input('输入要删除的商品序号(b=返回上一级,q=退出):')
        if select == 'b':
            break
        elif select == 'q':  # 退出
            print('退出购物')
        elif select.isdigit() and int(select) > 0 and int(select) <= len(shopping_cart):
            shopping_cart.pop(int(select) - 1)
        else:
            print('输入错误,不存在 %s 商品' % select)


# 计算总价
def sel_price():
    price = 0
    for i in shopping_cart:
        price += i[1]
    return price


print_commodity()

while True:
    select = input(
        "选择1~9加入购物车(b=结算,q=退出,s=购物车列表,v=商品列表,d=删除购物车商品 余额:%d):" % Money)
    if select == 'v':  # 显示商品列表
        print_commodity()
    elif select == 's':  # 显示购物车列表
        print_shopping_cart()
    elif select == 'q':  # 退出
        print('
' * 5, '退出购物'.center(50, '-'))
        break
    elif select == 'd':  # 删除购物车商品
        del_shopping_cart()
    elif select == 'b':  # 结算
        if len(shopping_cart) > 0:  # 判断购物车有无商品
            price = sel_price()
            if (Money - price) > 0:  # 判断余额是否充足
                Money -= price
                print('共购买 %d 件商品,总价:%d ,剩余金额 %d' %
                      (len(shopping_cart), price, Money))
                shopping_cart.clear()  # 清空购物车
            else:
                print('余额不足,无法完成当前购买 剩余余额:%d 商品总价:%d' % (Money, price))
                print('1:删除购物车所有商品
2:删除一些商品')
                while True:
                    select = input('输入选择(b=返回上一级,q=退出):')
                    if select == 'b':  # f
                        break
                    elif select == 'q':  # 退出
                        print('退出购物')
                    elif select == '1':  # 删除所有
                        shopping_cart.clear()
                        break
                    elif select == '2':  # 删除指定商品
                        del_shopping_cart()
                        break
                    else:
                        print('输入错误,不存在 %s 指令' % select)
        else:
            print('未选择商品,请购买商品后结算')
    elif select.isdigit() and int(select) > 0 and int(select) <= len(commodity):
        # 获取键(购物列表用list的话,可以commodity[int(select)-1][0]或[1]取出商品名称和价格
        itemkey = list(commodity.keys())[int(select) - 1]
        # 加入购物车
        shopping_cart.append([itemkey, commodity[itemkey]])
        print("%s 加入购物车 已加入%d件商品" % (itemkey, len(shopping_cart)))
    else:
        print('输入错误,不存在 %s 指令' % select)


exit()
原文地址:https://www.cnblogs.com/xh4528/p/6498596.html