python基础(二)作业题

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

# 定义商品列表
goods = {
    1: {'name': '电脑', 'price': 1999},
    2: {'name': '鼠标', 'price': 10},
    3: {'name': '键盘', 'price': 50},
    4: {'name': '显示器', 'price': 1000},
}

# 定义我的账户
my = {
    'account_balance': 0,  # 账户余额默认为0
    'shopping_cart': {},  # 购物车默认为空
    'order': {}  # 订单默认为空
}

# 按照商品序号存储购买数量
dic1 = {
    1: {'name': '电脑', 'price': 1999, 'num': ''},
    2: {'name': '鼠标', 'price': 10, 'num': ''},
    3: {'name': '键盘', 'price': 50, 'num': ''},
    4: {'name': '显示器', 'price': 1000, 'num': ''},
}
# 用户进行充值
while True:
    charge = input('账户余额为0 ,请您充值:')  # 首先进行账户充值
    if charge.strip().replace('.', '', 1).isdigit():
        my['account balance'] = charge
        charge = int(charge)
        print('恭喜您,充值成功' + '' + '账户余额为' + my['account balance'])
        break
    else:
        print('您的充值失败,请您重新充值')
        continue

# 商品页面显示
for k, v in goods.items():
    print(k, v['name'], v['price'])

count = 0
balance = 0
while True:
    goods_serial_number = input('请选择您购买的商品序号:').upper()
  
    #  用户输入Q或者q退出购买程序
    if goods_serial_number == 'Q':
        if my['shopping_cart'] == '':
            print('账户余额:'+str(balance))
            print('总共花费金额:' + str(charge - balance))
        elif my['shopping_cart'] != '':
            for k,v in dic1.items():
                if k in my['shopping_cart'].items():
                    dic1[k]['name'] =my['shopping_cart'][k]
                    print(v['name'],v['price'],v['num'])
            print('总共花费金额:'+ str(charge - balance))
            print('账户余额:'+str(balance))
            break
        
        # 用户输入n进行购物车结算
    elif goods_serial_number == 'N':
        for i in dic1.keys():
            if i in my['shopping_cart'].keys():
                dic1[i]['num'] = my['shopping_cart'][i]
        for l in dic1.keys():  # 依次显示用户购物车里面的商品,数量及单价
            if l in my['shopping_cart'].keys():
                msg = '''
                ---------------------购买信息------------------
                商品名称:%(name)s  商品数量:%(num)s  商品单价:%(price)s
                --------------------end---------------------
                ''' % dic1[l]
                print(msg)
            else:
                pass
        
        # 计算各个商品的总价
     
        for k in dic1:
            if k in my['shopping_cart']:
                count = dic1[k]['num'] * dic1[k]['price'] + count  # 计算花费金额
                balance = charge - count  # 计算账户余额
        if balance >= 0:
            print('恭喜您,购买成功!')
        elif balance < 0:
            print('余额不足,请删除部分商品。')
            while balance < 0:
                del_goods_serial_number = input('请输入删除物品的序号:').upper()
                if (del_goods_serial_number == 'Q' )or (del_goods_serial_number == 'N'):
                    break
                elif del_goods_serial_number.isdigit():
                    if int(del_goods_serial_number) in my['shopping_cart'] :
                        if my['shopping_cart'][int(del_goods_serial_number)] >= 1 :
                            my['shopping_cart'][int(del_goods_serial_number)] = my['shopping_cart'][int(del_goods_serial_number)] - 1
                            print(my['shopping_cart'])
                            balance = balance + dic1[int(del_goods_serial_number)]['num'] * dic1[int(del_goods_serial_number)]['price']
                        else:
                            print('购物车中已经无该商品,请重新选择')
                else:
                    print('购物车中无该商品,请重新选择')
                    continue
            else:
                print('恭喜你,购买成功')
                    
    elif goods_serial_number.isdigit() == False:
        print("商品序号输入有误,请重新输入!")
        continue
    elif int(goods_serial_number) in goods:
        goods_serial_number = int(goods_serial_number)
        if goods_serial_number in my['shopping_cart']:
            my['shopping_cart'][goods_serial_number] = int(my['shopping_cart'][goods_serial_number]) + 1
        else:
            my['shopping_cart'].setdefault(goods_serial_number)
            my['shopping_cart'][goods_serial_number] = 1
        print(my['shopping_cart'])

猜你喜欢

转载自www.cnblogs.com/mayugang/p/9886245.html