''' 作业:购物车 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'])
python基础(二)作业题
猜你喜欢
转载自www.cnblogs.com/mayugang/p/9886245.html
今日推荐
周排行