1. 程式人生 > >python基礎(二)作業題

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'])