iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Software Development

學會 Python 不可怕:我每天學一點的 30 天筆記系列 第 15

Day15 : 進階挑戰 – 列表、字典、集合大練功 !

  • 分享至 

  • xImage
  •  

練習1:購物車系統 (list + dict)
題目
https://ithelp.ithome.com.tw/upload/images/20250929/20178872EnASdULrTx.png
程式範例
https://ithelp.ithome.com.tw/upload/images/20250929/20178872KhDKIfCrgG.png
輸出結果
https://ithelp.ithome.com.tw/upload/images/20250929/20178872SmLXSxjL8z.png

  • shopping_cart 是一個列表,裡面有三個字典
  • 用for 迴圈「從 shopping_cart 裡一個一個拿出商品,暫時存到 item 變數裡」
  • 用 .append() 把新字典加到 shopping_cart 的最後
  • 先假設第一個商品是最貴的,用迴圈檢查每個商品,如果遇到更貴的,就更新 most_expensive,最後就會得到整個購物車裡單價最高的商品
  • total 是一個變數,用來存「總金額」,+= 的意思是「累加」,相當於:
    第一圈:total = 0 + 60 = 60
    第二圈:total = 60 + 50 = 110

練習2:班級分組 (list + set)
題目
https://ithelp.ithome.com.tw/upload/images/20250929/20178872Vp9bJsHYDC.png
程式範例
https://ithelp.ithome.com.tw/upload/images/20250929/20178872eaZIbHTGsz.png
輸出結果
https://ithelp.ithome.com.tw/upload/images/20250929/20178872OICcCE2uRw.png

  • students[:3] 代表從索引 0 取到索引 2 (不含索引 3),所以得到前 3 個學生
  • students[3:] 代表從索引 3 取到最後,得到後 3 個學生
  • 使用 add() 方法,將 "Ivy" 加進第一組集合
  • 集合沒有順序,所以 "Ivy" 的位置不一定在最後
  • "Ivy" in group1 → 會回傳布林值 True 或 False

練習3:書籍分類系統
題目
https://ithelp.ithome.com.tw/upload/images/20250929/20178872U8oM2kbPj9.png
程式範例
https://ithelp.ithome.com.tw/upload/images/20250929/20178872wpqCeIwcVD.png
輸出結果
https://ithelp.ithome.com.tw/upload/images/20250929/20178872m00qBxUHWz.png

  • 首先先用all_tags = set()建立一個「空集合」,集合(set)裡不會放重複的東西
  • .update() 會把這些標籤加進 all_tags 裡
  • book["tags"] 會拿到這本書的所有標籤(是一個集合)
  • 因為 all_tags 是集合,所以即使標籤重複,也只會保留一個
  • tag_count 是一個字典,用來記錄每個tag出現過幾次,key 是標籤名稱,value 是出現次數
  • if tag in tag_count: 是在問:「這個標籤有沒有記錄過?」
  • += 1 就是把次數加一

練習4:學生選課系統
題目
https://ithelp.ithome.com.tw/upload/images/20250929/20178872akcYuGx8Bc.png
程式範例
https://ithelp.ithome.com.tw/upload/images/20250929/20178872tGyQLgXj7F.png
輸出結果
https://ithelp.ithome.com.tw/upload/images/20250929/20178872lB7gmfBrbS.png

  • 首先先設定一個字典 courses,key 是課程名稱,value 是選這門課的學生集合
  • courses["Math"] 會輸出 Math 課的學生集合
  • & 是交集運算,只會留下同時在兩個集合裡的學生
  • (第3題)
    先用 | 聯集,把三門課的學生集合合併 → 取得所有有選課的學生,結果不重複,
    再用 & 交集找出同時選兩門課的學生,
    接著用 | 聯集把這些交集加起來 → 所有選多門課的人,
    最後用 - 差集從「所有學生」中去掉「選多門課的學生」,剩下的就是只選一門課的學生。

上一篇
Day14 : 基礎練習 – 列表、字典、集合
下一篇
Day16 : 函式基礎 – 定義、呼叫、參數、回傳值
系列文
學會 Python 不可怕:我每天學一點的 30 天筆記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言