第二天作业_购物车

作业需求:
1. 用户先给自己的账户充钱:比如先充3000元。 2. 页面显示 序号 + 商品名称 + 商品价格,如: 1 电脑 1999 2 鼠标 10 … n 购物车结算 3. 用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。 4. 如果用户输入的商品序号有误,则提示输入有误,并重新输入。 5. 用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。 6. 用户输入Q或者q退出程序。 7. 退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少

article = {
    '1': ['电脑', 199],
    '2': ['鼠标', 100],
    '3': ['键盘', 999],
    '4': ['显示器', 1999],
}

shopping_cart = {}  # 存放已添加的商品

# 输入充值的金额, 如果输入的是数字就把money转换成int类型
while True:
    money = input('请输入充值金额: ')
    if money.isdigit():
        money = int(money)
        break
    else:
        print('请重新输入正确的充值金额,只支持输入整数\n')

# 打印商品列表
print('商品列表'.center(20, '#'))
for item in article:
    print(f'{item}. {article[item][0]} - {article[item][1]}')

while True:
    key = input('\n请输入商品编号(nN)结算(qQ)退出: ').strip()

  # 添加商品到购物车的逻辑
    if key in article:
        shopping_cart.setdefault(key, article[key])
        if len(shopping_cart[key]) != 3:
            shopping_cart[key].append(0)
        shopping_cart[key][2] += 1
        print(f'购物车添加成功: {article[key][0]}: {article[key][1]}')

    # 购物车结算的逻辑
    elif key.upper() == 'N':
        total_price = 0
        print('结算清单'.center(20, '#'))
        for item in shopping_cart:
            print(f'{item}. {shopping_cart[item][0]} - {shopping_cart[item][1]}元 - {shopping_cart[item][2]}个')
            # 计算购物车的商品总价格
            total_price += shopping_cart[item][1] * shopping_cart[item][2]
        # 判断购物车的商品总价格是否小于充值金额
        if total_price < money:
            print(f'本次消费{total_price}元, 剩余金额{money - total_price}元, 欢迎下次光临!')
            break
        else:
            while True:
                key2 = input('余额不足 - 请输入要删除的商品序号: ')
                if key2 in shopping_cart:
                    # 判断购买的商品数量是否等于1, 如果True则直接从字典删除该商品
                    if shopping_cart[key2][2] == 1:
                        shopping_cart.pop(key2)
                        break
                    # 如果商品数量不等于1则商品数量减1
                    else:
                        shopping_cart[key2][2] -= 1
                        break
                else:
                    print('请正确输入要删除的商品序号')

    # 输入q/Q退出程序
    elif key.upper() == 'Q':
        break

    # 输入的是非数字或者超出编号范围
    else:
        print('商品序号输入错误, 请重新输入')
View Code

 

 

  

posted @ 2019-04-03 17:59  黄土高坡望大海  阅读(112)  评论(0编辑  收藏  举报