1. 程式人生 > >python列表、迴圈、判斷小練習——購物車小程式

python列表、迴圈、判斷小練習——購物車小程式

程式要求:

1.商品資訊儲存在檔案中。

2.列印商品資訊,包括名稱及編號,價格

3.輸入工資

4.選擇商品編號將商品放入購物車,並計算剩餘工資。

5.工資不夠時提醒餘額不足

6.將已購商品,餘額記錄長久儲存

7.列印已購商品名單

8.可以新增商品及價格

 

流程圖

 

所用開發軟體:pycharm

開發環境:win10

所用檔案:

  • 購物記錄檔案,名為shopping_date.txt

         內容預設為空

  • 商品資訊檔案,名為product_date.txt

內容為:apple:10000

              huawei:10000

具體實現程式碼

# Author: Mina


product_list = []  # 構建空列表以存放商品資訊
shopping_list = []  # 構建空列表以存放已購商品資訊

while True:
    choice = input('檢視購物記錄請按W\n新增商品資訊請按A\n購物請按S')
    if choice == 'w' or choice == 'W':
        with open('shopping_date', 'r
')as f_shop: # 以只讀模式開啟購物資訊檔案 shop_list = f_shop.readlines() # 讀取購物資訊並轉為列表 for shop_line in shop_list: # 利用迴圈列印購物記錄 shop_line = shop_line.strip() print(shop_line) else: pass elif choice == 'A' or choice == 'a': new_product
= input('新增的商品名稱:') new_price = input('商品價格:') with open('product_date', 'a') as f_prod: # 以只寫模式開啟商品資訊檔案 f_prod.writelines([new_product, ':', new_price, '\n']) # 將商品資訊以列表的形式寫入商品檔案 # 商品名與價格用分號隔開,以便於之後的讀取 elif choice == 's' or choice == 'S': break # 跳出本迴圈,執行下個模組的命令 else: print('無效指令,請重新輸入') flag = input('退出請按q,繼續請按g') if flag == 'Q' or flag == 'q': exit('退出程式') elif flag == 'g' or flag == 'G': continue else: print('無效命令,請重新輸入') else: exit() salary = input('請輸入你的工資:') if salary.isdigit(): # 判斷輸入工資是否為整數,返回值不為0 salary = int(salary) # 實際輸入為字串,強制轉換為整數,便於之後的計算 else: print('輸入有誤,請重新輸入工資') while True: with open('product_date', 'r') as f_prod: # 以只讀模式開啟商品資訊檔案 prod_list = f_prod.readlines() # 讀取商品資訊 i = len(prod_list) # 計算列表長度,用於後面判斷是否有該商品 for prod_line in prod_list: (prod, price) = prod_line.strip().split(':') # 分別提取商品名與價格,以分號為分割 print(prod_list.index(prod_line), '\t', prod, '\t', price) # 將列表下標作為商品編號,列印商品資訊 price = int(price) # 將價格轉為整數型別,便於計算 product_list.append([prod, price]) # 將商品資訊以列表的形式追加到商品資訊列表便於查詢 else: pass user_choice = input('請輸入商品編號:\n(如果需要退出請按Q)') if user_choice.isdigit(): user_choice = int(user_choice) if 0 <= user_choice < i: # 判斷有無該商品 prod_item = product_list[user_choice] # 提取商品資訊 if prod_item[1] <= salary: # 判斷工資餘額是否充足 salary = salary-prod_item[1] # 計算購買商品後的餘額 shopping_list.append(prod_item) # 將已購商品資訊列表追加到購物記錄列表 print("將%s加入購物車,剩餘工資為%s" % (prod_item, salary)) else: print('\033[31;1m\033[0m 你的餘額不足,為%s\033[0m' % salary) else: print('\033[32;1m\033[0m 沒有這件商品\033[0m') elif user_choice == 'q' or user_choice == 'Q': # 退出購買程式 print('shopping list'.center(30, '-')) # 列印購物記錄 for p in shopping_list: # 利用迴圈列印已購商品資訊 print(p) with open('shopping_date', 'a')as f_shop: # 以追加模式開啟購物記錄檔案 f_shop.writelines(str(p) + '\n') # 將已購商品資訊以列表形式寫人購物記錄檔案 f_shop.write(str(salary) + '\n') # 將餘額寫入購物記錄檔案 else: pass exit('你的餘額為%d' % salary) # 退出程式,並列印餘額 else: print('錯誤操作')