iT邦幫忙

2025 iThome 鐵人賽

DAY 30
0

今天的目標是要做出一個點餐系統
功能 :
1.顯示菜單
2.點餐功能
3.查看購物車
4.結帳
5.離開

1. 菜單與購物車資料結構
https://ithelp.ithome.com.tw/upload/images/20251014/20178872MTBvRSv2kW.png

  • menu 是字典(dict),用餐點名稱當 key、價格當 value。字典方便用名字查價格,例如:menu["漢堡"] 會回傳 80
  • cart 是列表(list),用來記錄使用者每次點的餐點名稱(重複點同一樣會在列表出現多次)

2. 顯示菜單:show_menu()
https://ithelp.ithome.com.tw/upload/images/20251014/20178872LpRiQB2Age.png

  • menu.items() 會回傳每一對 (key, value),這裡拆成 item, price
  • for 迴圈會把每個餐點與價格印出來
  • f"{item} : ${price}" 稱為 f-string,可以把變數直接插入字串

3. 加入餐點:add_item()
https://ithelp.ithome.com.tw/upload/images/20251014/20178872v2WKF1eJMw.png

  • input() 會回傳字串,使用者輸入餐點名稱(例如輸入漢堡)
  • if item in menu : 判斷使用者輸入的名字是否在菜單字典的 key 裡
  • cart.append(item) 把餐點加入購物車列表
  • 注意:輸入必須完全符合字典的 key(大小寫與空白都要一樣),否則會印「沒有這個餐點」

就會輸出以下結果,因為字典裡的 key 並沒有「薯條、雞塊」
https://ithelp.ithome.com.tw/upload/images/20251014/20178872sah7w9BhiM.png

4. 查看購物車:show_cart()
https://ithelp.ithome.com.tw/upload/images/20251014/20178872ftMQhqG3jb.png

  • if not cart : 用來判斷列表是否為空(空列表等於 False)
  • enumerate(cart, 1):會同時提供索引 i(從 1 開始)與元素 item,方便印出編號
  • price = menu[item]:用字典查價格
  • total += price:把每個餐點價格加到 total,最後印總金額

5. 結帳:checkout()
https://ithelp.ithome.com.tw/upload/images/20251014/20178872ei0jtFKRrZ.png

  • 如果購物車空就提醒,否則列出所有餐點與價格並顯示總金額
  • 結帳後目前程式沒有把 cart 清空;程式流程設計上在結帳 checkout() 後會在 main() 跳出並結束程式

6. 主選單與主流程:main()
https://ithelp.ithome.com.tw/upload/images/20251014/20178872QMIEwq8NNp.png

  • while True : 建立一個選單迴圈,直到使用者選擇結帳或離開而 break
  • choice 是字串,比較時要用 "1"、"2",而不是整數 1(因為 input() 回傳字串)
  • 當選 4(結帳)或 5(離開)會 break 出迴圈結束主程式

最後結果會輸出
https://ithelp.ithome.com.tw/upload/images/20251014/20178872BA3ZbG3hzQ.png
https://ithelp.ithome.com.tw/upload/images/20251014/20178872FKtrAeNuD6.png
https://ithelp.ithome.com.tw/upload/images/20251014/20178872JiBxv5dqZi.png
https://ithelp.ithome.com.tw/upload/images/20251014/20178872HaUEdjebrk.png
https://ithelp.ithome.com.tw/upload/images/20251014/20178872SV06EGwrjW.png
https://ithelp.ithome.com.tw/upload/images/20251014/20178872KOTZuCvdB5.png
https://ithelp.ithome.com.tw/upload/images/20251014/20178872VtuIEB1t3f.png

今天專案內所用到的技能有 :

  • 變數
  • list / dict
  • while 迴圈
  • if / elif / else 判斷
  • 函式(function)

一起做到這邊的你們,恭喜你已經能將前面所學,真正運用到實際操作上,自己也可以寫出Python的小專案啦 ~ 30 天的學習旅程告一段落了,希望這一系列的練習,能幫助到一起學習的小夥伴們打好 Python 基礎/images/emoticon/emoticon42.gif


上一篇
Day29 : 小專案2 - 猜數字遊戲(終極密碼)
系列文
學會 Python 不可怕:我每天學一點的 30 天筆記30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言