一起玩Python程式:新手寫程式也可以這麼簡單!

Week 07: 資料容器(上) - 清單的魔法世界!

張傑帆

National Taiwan University

清單的魔法世界!

目錄

  • 📦 清單的基本概念與建立方法
  • 🔧 清單的新增、刪除、修改操作
  • 🔍 清單切片與索引使用
  • 🛠️ 清單的常用方法應用
  • 🏆 建立寶物收集系統
  • 💎 實作寶物管理功能

Alt1

🎯 學習目標

透過今天的課程,你將會:

  • 🎒 理解清單(List)的概念,學會建立和管理資料集合
  • 🔨 熟練掌握清單的基本操作:新增、刪除、修改
  • 🎯 學會使用清單索引和切片技巧
  • 📚 應用清單的常用方法解決實際問題
  • 🏆 建立一個完整的寶物收集管理系統
  • 💡 培養資料結構的抽象思維能力

Let's code! 🐍✨

💡 成為寶物收集家!

想像你是一位冒險家,在探索世界的過程中收集了各種寶物!

  • 🏆 金幣、寶石、古董...
  • 📚 魔法書籍、卷軸...
  • ⚔️ 武器、盔甲...
  • 🧪 神秘藥水...

問題來了:你要如何管理這些寶物?
Python的解答:使用清單(List)來建立你的寶物收藏庫!

📦 什麼是清單(List)?

清單就像是一個魔法背包,可以裝下很多東西!

清單的特色:

  • 🎒 有順序的容器:每個物品都有固定位置
  • 📝 可以重複:同樣的寶物可以有很多個
  • 🔄 可以修改:隨時新增、刪除或更換物品
  • 🏷️ 有索引編號:從0開始編號,方便找到物品

🏗️ 建立你的第一個寶物清單

方法一:直接建立

# 建立空的寶物清單
treasure_list = []

# 建立有初始寶物的清單
my_treasures = ["金幣", "紅寶石", "魔法書", "銀劍"]
print(my_treasures)
# 輸出: ['金幣', '紅寶石', '魔法書', '銀劍']

方法二:使用list()函數

# 建立空清單
empty_bag = list()

# 從字串建立清單
spell_letters = list("MAGIC")
print(spell_letters)
# 輸出: ['M', 'A', 'G', 'I', 'C']

🔢 清單索引:找到你的寶物位置

清單中每個物品都有一個地址(索引)!

treasures = ["金幣", "紅寶石", "魔法書", "銀劍", "鑽石"]

# 正向索引(從左邊開始數,從0開始)
print(treasures[0])    # 金幣
print(treasures[2])    # 魔法書
print(treasures[4])    # 鑽石

# 負向索引(從右邊開始數,從-1開始)
print(treasures[-1])   # 鑽石(最後一個)
print(treasures[-2])   # 銀劍(倒數第二個)

✨ 小練習:寶物定位器

試著完成以下程式:

# 你的寶物清單
my_collection = ["古老地圖", "神秘水晶", "黃金匕首", "魔法戒指", "龍鱗盾牌"]

# 請找出:
# 1. 第一個寶物是什麼?
first_treasure = my_collection[?]

# 2. 最後一個寶物是什麼?
last_treasure = my_collection[?]

# 3. 第三個寶物是什麼?
third_treasure = my_collection[?]

print(f"第一個寶物:{first_treasure}")
print(f"最後一個寶物:{last_treasure}")
print(f"第三個寶物:{third_treasure}")

List操作:增刪查改

增刪查改

操作類型 方法名稱 說明 範例程式碼
新增 append() 在清單末尾添加元素 my_list.append("新元素")
insert() 在指定位置插入元素 my_list.insert(索引, "新元素")
刪除 remove() 移除指定的元素 my_list.remove("元素")
pop() 移除並返回指定位置的元素 removed = my_list.pop(索引)
修改 直接賦值 修改指定位置的元素 my_list[索引] = "新值"
查詢 index() 獲取元素的索引位置 位置 = my_list.index("元素")
count() 統計元素出現的次數 次數 = my_list.count("元素")
操作類型 方法名稱 說明 範例程式碼
切片 批量查詢元素 子清單 = my_list[start:end:step]
其他 len() 獲取清單長度 長度 = len(my_list)
sort() 排序清單 my_list.sort()my_list.sort(reverse=True)
reverse() 反轉清單順序 my_list.reverse()
copy() 複製清單 new_list = my_list.copy()
clear() 清空清單 my_list.clear()

🔧 清單的新增操作

append():在清單末尾添加新寶物

treasures = ["金幣", "紅寶石"]
treasures.append("魔法書")
print(treasures)  # ['金幣', '紅寶石', '魔法書']

treasures.append("銀劍")
print(treasures)  # ['金幣', '紅寶石', '魔法書', '銀劍']

insert():在指定位置插入寶物

treasures = ["金幣", "紅寶石", "魔法書"]
treasures.insert(1, "鑽石")  # 在索引1的位置插入
print(treasures)  # ['金幣', '鑽石', '紅寶石', '魔法書']

treasures.insert(0, "皇冠")  # 在開頭插入
print(treasures)  # ['皇冠', '金幣', '鑽石', '紅寶石', '魔法書']

🗑️ 清單的刪除操作

remove():移除指定的寶物

treasures = ["金幣", "紅寶石", "魔法書", "銀劍"]
treasures.remove("魔法書")  # 移除特定物品
print(treasures)  # ['金幣', '紅寶石', '銀劍']

pop():取出指定位置的寶物

treasures = ["金幣", "紅寶石", "魔法書", "銀劍"]
removed_item = treasures.pop()      # 取出最後一個
print(f"取出了: {removed_item}")    # 取出了: 銀劍
print(treasures)                    # ['金幣', '紅寶石', '魔法書']

removed_item = treasures.pop(0)     # 取出索引0的物品
print(f"取出了: {removed_item}")    # 取出了: 金幣
print(treasures)                    # ['紅寶石', '魔法書']

🔄 清單的修改操作

直接修改指定位置的寶物

treasures = ["舊劍", "紅寶石", "破盾", "金幣"]

# 升級裝備!
treasures[0] = "神劍"      # 舊劍 → 神劍
treasures[2] = "龍鱗盾"    # 破盾 → 龍鱗盾

print(treasures)  # ['神劍', '紅寶石', '龍鱗盾', '金幣']

# 批量修改多個物品
treasures[1:3] = ["藍寶石", "鑽石盾"]
print(treasures)  # ['神劍', '藍寶石', '鑽石盾', '金幣']

✨ 小練習:寶物管理員

# 初始寶物清單
inventory = ["生鏽匕首", "小金幣", "破布衣"]

# 任務1:在末尾添加 "魔法藥水"
inventory.append("?")

# 任務2:在開頭插入 "傳說武器"
inventory.insert(?, "?")

# 任務3:將 "破布衣" 升級成 "龍鱗甲"
inventory[?] = "?"

# 任務4:移除 "生鏽匕首"
inventory.remove("?")

print("最終寶物清單:", inventory)
# 期望結果: ['傳說武器', '小金幣', '龍鱗甲', '魔法藥水']

休息一下,喝口水!💧

🎯 清單切片:批量操作的魔法

切片語法:列表[start:end:step]

treasures = ["金幣", "銀幣", "紅寶石", "藍寶石", "鑽石", "翡翠", "珍珠"]

# 基本切片
print(treasures[1:4])     # ['銀幣', '紅寶石', '藍寶石']
print(treasures[:3])      # ['金幣', '銀幣', '紅寶石']
print(treasures[4:])      # ['鑽石', '翡翠', '珍珠']

# 帶步長的切片
print(treasures[::2])     # ['金幣', '紅寶石', '鑽石', '珍珠']
print(treasures[1::2])    # ['銀幣', '藍寶石', '翡翠']

# 反向切片
print(treasures[::-1])    # 反轉整個清單

🛠️ 清單的常用方法

len():計算寶物數量

treasures = ["金幣", "紅寶石", "魔法書", "銀劍"]
print(f"你總共有 {len(treasures)} 個寶物")  # 你總共有 4 個寶物

count():統計特定寶物數量

bag = ["金幣", "銀幣", "金幣", "寶石", "金幣"]
gold_count = bag.count("金幣")
print(f"金幣數量: {gold_count}")  # 金幣數量: 3

index():找到寶物的位置

treasures = ["劍", "盾", "藥水", "卷軸"]
position = treasures.index("藥水")
print(f"藥水在第 {position} 號位置")  # 藥水在第 2 號位置

📊 清單排序與整理

sort():依照順序排列

# 數字排序
numbers = [100, 50, 200, 75]
numbers.sort()  # 小到大
print(numbers)  # [50, 75, 100, 200]

numbers.sort(reverse=True)  # 大到小
print(numbers)  # [200, 100, 75, 50]

# 文字排序
items = ["劍", "盾", "弓", "斧"]
items.sort()
print(items)  # ['弓', '劍', '斧', '盾'] (依照字典順序)

reverse():反轉清單順序

treasures = ["第一", "第二", "第三", "第四"]
treasures.reverse()
print(treasures)  # ['第四', '第三', '第二', '第一']

🎯 清單的實用技巧

檢查物品是否存在

treasures = ["金幣", "銀劍", "魔法書"]

# 方法1: 使用 in 關鍵字
if "金幣" in treasures:
    print("找到金幣!")

# 方法2: 使用 count()
if treasures.count("銀劍") > 0:
    print("找到銀劍!")

清單複製與合併

# 複製清單
original = ["劍", "盾"]
copy1 = original.copy()          # 方法1
copy2 = original[:]             # 方法2
copy3 = list(original)          # 方法3
print(copy1)  # ['劍', '盾']
print(copy2)  # ['劍', '盾']
print(copy3)  # ['劍', '盾']

# 合併清單
weapons = ["劍", "弓"]
armor = ["盾", "甲"]
all_gear = weapons + armor      # ['劍', '弓', '盾', '甲']
print(all_gear)  # ['劍', '弓', '盾', '甲']

🏅 清單的進階應用

清單推導式 (List Comprehension)

# 創建平方數清單
numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers] # List comprehension
print(squares)  # [1, 4, 9, 16, 25]

# 過濾高價值寶物
treasures = [
    {"name": "金劍", "value": 1000},
    {"name": "銀幣", "value": 10},
    {"name": "鑽石", "value": 5000}
]

expensive = [t["name"] for t in treasures if t["value"] > 500]
print(expensive)  # ['金劍', '鑽石']

多維清單:建立寶物倉庫

# 3x3的寶物倉庫
warehouse = [
    ["金劍", "銀盾", "魔法書"],
    ["紅藥水", "藍藥水", "綠藥水"],
    ["金幣", "銀幣", "寶石"]
]

# 存取特定位置的寶物
print(warehouse[0][1])  # 銀盾
print(warehouse[2][0])  # 金幣

🎲 隨機寶物生成器

import random

def generate_random_treasure():
    """隨機生成寶物"""
    treasure_names = [
        "神秘寶箱", "古老卷軸", "魔法水晶", "龍鱗盾牌", 
        "傳說之劍", "治療藥水", "隱身斗篷", "火焰戒指"
    ]
    
    rarities = ["普通", "稀有", "史詩", "傳說"]
    rarity_multipliers = {"普通": 1, "稀有": 3, "史詩": 10, "傳說": 50}
    
    name = random.choice(treasure_names)
    rarity = random.choice(rarities)
    base_value = random.randint(10, 100)
    final_value = base_value * rarity_multipliers[rarity]
    
    return {
        "name": f"{rarity}{name}",
        "value": final_value,
        "rarity": rarity
    }

# 生成5個隨機寶物
for _ in range(5):
    treasure = generate_random_treasure()
    print(f"{treasure['name']} - 價值: {treasure['value']}")

🔍 清單搜尋演算法

線性搜尋

def linear_search(treasure_list, target):
    """線性搜尋寶物"""
    for i, treasure in enumerate(treasure_list):
        if treasure == target:
            return i  # 回傳索引位置
    return -1  # 找不到

treasures = ["金幣", "銀劍", "魔法書", "紅寶石"]
position = linear_search(treasures, "魔法書")
if position != -1:
    print(f"找到魔法書在位置 {position}")
else:
    print("找不到魔法書")

✨ 綜合範例:寶物分類器

# 所有寶物(未分類)
all_items = ["金劍", "銀幣", "魔法書", "金幣", "鐵盾", "紅藥水", "金戒指", "藍藥水"]

# 建立分類清單
weapons = []      # 武器
money = []        # 金錢
books = []        # 書籍
potions = []      # 藥水
jewelry = []      # 飾品

# 請完成分類邏輯
for item in all_items:
    if "劍" in item or "盾" in item:
        weapons.append(item)
    elif "幣" in item:
        money.append(item)
    elif "書" in item:
        books.append(item)
    elif "藥水" in item:
        potions.append(item)
    elif "戒指" in item:
        jewelry.append(item)

print(f"武器: {weapons}")
print(f"金錢: {money}")
print(f"書籍: {books}")
print(f"藥水: {potions}")
print(f"飾品: {jewelry}")

🏆 實作專案:寶物收集管理系統

讓我們建立一個完整的寶物管理系統,並將所有功能整合成一支完整的程式!

def main():
  treasures = []
  total_value = 0
  
  while True:
    print("\n🏰 === 寶物管理系統 ===")
    print("1. 添加寶物")
    print("2. 移除寶物")
    print("3. 搜尋寶物")
    print("4. 顯示清單")
    print("5. 最有價值寶物")
    print("6. 離開")
    
    choice = input("\n請選擇操作 (1-6): ")

(接上頁)

    if choice == "1":
      name = input("寶物名稱: ")
      value = int(input("寶物價值: "))
      treasure = {"name": name, "value": value}
      treasures.append(treasure)
      total_value += value
      print(f"✅ 成功添加寶物: {name} (價值: {value})")
    
    elif choice == "2":
      name = input("要移除的寶物名稱: ")
      found = False
      for treasure in treasures:
        if treasure["name"] == name:
          treasures.remove(treasure)
          total_value -= treasure["value"]
          print(f"🗑 成功移除寶物: {name}")
          found = True
          break
      if not found:
        print(f"❌ 找不到寶物: {name}")

(接上頁)

    
    elif choice == "3":
      keyword = input("搜尋關鍵字: ")
      results = [treasure for treasure in treasures if keyword.lower() in treasure["name"].lower()]
      if results:
        print("\n🔍 搜尋結果:")
        for treasure in results:
          print(f"- {treasure['name']} (價值: {treasure['value']})")
      else:
        print("❌ 找不到相關寶物")
    
    elif choice == "4":
      print("\n🎒 === 寶物清單 ===")
      if not treasures:
        print("背包是空的!")
      else:
        for i, treasure in enumerate(treasures, 1):
          print(f"{i}. {treasure['name']} - 價值: {treasure['value']}")
        print(f"\n💰 總價值: {total_value}")

(接上頁)

    
    elif choice == "5":
      if not treasures:
        print("背包是空的!")
      else:
        most_valuable = max(treasures, key=lambda x: x["value"])
        print(f"\n💎 最有價值的寶物: {most_valuable['name']} (價值: {most_valuable['value']})")
    
    elif choice == "6":
      print("👋 再見!")
      break
    
    else:
      print("❌ 無效的選擇,請重新輸入!")

# 執行程式
if __name__ == "__main__":
  main()

🎯 運算思維總結

🔮 抽象化 (Abstraction)

  • 清單是現實中「容器」概念的抽象
  • 將複雜的資料管理簡化為基本操作
  • 隱藏實作細節,專注於功能使用

🧩 問題分解 (Decomposition)

  • 寶物管理 → 新增、刪除、搜尋、排序
  • 複雜功能拆解為簡單的清單操作
  • 每個子問題都有對應的方法解決

🔄 演算法思維 (Algorithmic Thinking)

  • 了解不同操作的效能差異 (如:append vs insert)
  • 選擇適當的資料結構和方法
  • 設計高效的搜尋和排序策略

🎨 模式識別 (Pattern Recognition)

  • 發現清單操作的共同模式
  • 重複使用解決方案
  • 建立可重用的程式碼模板

💡 延伸學習資源

📚 相關主題

  • 元組 (Tuple):不可變的有序容器
  • 字典 (Dictionary):鍵值對資料結構
  • 集合 (Set):不重複元素的容器
  • 陣列 (Array):數值專用的高效容器

🔗 實際應用領域

  • 遊戲開發:物品系統、技能樹管理
  • 資料分析:數據清理、統計分析
  • 網站開發:用戶清單、商品目錄
  • 科學計算:實驗數據、測量結果

💻 進階技能

  • 清單推導式(List Comprehension):優雅的清單建立方式
  • 生成器 (Generator):記憶體效率的資料產生
  • NumPy陣列:科學計算專用清單
  • pandas DataFrame:表格資料處理

本週總結 🎉

🎓 今天你學會了:

  • 📦 清單基礎:建立、索引、切片操作
  • 🔧 清單操作:新增(append, insert)、刪除(remove, pop)、修改
  • 🛠️ 常用方法:len, count, index, sort, reverse
  • 🏆 實際應用:寶物管理系統的完整實作
  • 💡 運算思維:抽象化、問題分解、演算法設計

🎯 下週預告

Week 08: 資料容器(下) - 字典的奧秘寶庫!

  • 生活議題: 打造遊戲背包系統,管理你的物品
  • 課程內容:
    • 字典(Dictionary)基礎概念與語法
    • 字典的鍵值配對操作
    • 字典的新增、刪除、修改方法 (keys, values, items)
    • 設計物品屬性結構 (名稱、類型、數量、價值)
    • 建立物品分類與數量管理系統
    • 實作背包容量限制與物品排序功能

作業:建立你的專屬收藏系統 📝

作業要求:

🎯 三選一作業

  • 任選其一完成即可,選哪個不影響分數

📝 選項一:基礎練習 (適合初學者)

建立一個簡單書櫃的書籍管理系統(選單介面),包含以下功能:

  1. 添加書籍到清單中。
  2. 搜尋書籍,根據關鍵字篩選結果。
  3. 移除特定書籍。
  4. 顯示目前的書籍清單。
  5. 結束程式。

若用戶輸入的並非這5項需提示錯誤,並要求重新輸入。

🔧 選項二:進階應用 (有點挑戰性)

智慧型購物清單系統

設計一個智慧型購物清單系統需具備以下功能:

  1. 商品分類(如食物、日用品等)。
  2. 價格估算與預算控制。
  3. 優先級排序(緊急、普通、可延後)。
  4. 購買歷史記錄與統計報告。

🚀 選項三:創意發揮 (自由度高)

自由創作:設計你的清單應用
自由設計一個基於清單的應用程式。
建議主題:

  • 🎵 音樂播放清單管理器
  • 📝 待辦事項智慧提醒系統
  • 🎮 遊戲角色技能樹系統
  • 🍳 食譜收集與搜尋系統
  • 💰 個人財務記帳系統
  • 🎬 電影/影集觀看清單

特殊要求:

  • 使用多個清單管理不同類型資料
  • 實作清單的排序和搜尋功能
  • 加入資料驗證(例如:價格必須為正數)
  • 提供統計報告功能
    發揮創意,設計一個使用清單的實用程式!

-----------------------------------------

圖片放大特效

table樣式

![Alt1](../images/1200px-National_Taiwan_University_logo.svg.png)![Alt2](../images/Python-logo-notext.svg.png) <style scoped> img[alt="Alt1"]{ background: rgba(255, 255, 255, 0); position: absolute; top: 10%; left: 10%; /* transform: translate(-50%, -50%); */ width: 200px; /* 調整圖片寬度 */ height: auto; /* 保持原始比例 */ padding:0; margin:0; z-index: 1; } img[alt="Alt2"]{ background: rgba(255, 255, 255, 0); position: absolute; top: 10%; left: 75%; /* transform: translate(-50%, -50%); */ width: 200px; /* 調整圖片寬度 */ height: auto; /* 保持原始比例 */ padding:0; margin:0; z-index: 2; } </style>

--- ## Week 07: 資料容器(上) - 清單的魔法世界! - **生活議題**: 成為寶物收集家,打造你的收藏清單 - **課程內容**: - 清單(List)的基本概念與建立方法 - 清單的新增(append, insert)、刪除(remove, pop)、修改操作 - 清單切片與索引使用 ([start:end:step]) - 清單的常用方法 (len, sort, reverse, count, index) - 建立寶物收集系統 - 實作新增寶物功能與搜尋功能 - **運算思維**: - **抽象化**: 理解清單作為資料集合的抽象概念 - **演算法思維**: 學習資料的增刪查改操作邏輯 - **問題分解**: 將資料管理需求分解為基本操作

完成以下寶物管理任務:

--- ## 🎪 清單的有趣應用 ### 洗牌與抽獎系統 ```python import random def treasure_lottery(participants, prizes): """寶物抽獎系統""" if len(participants) < len(prizes): print("參與者不足!") return # 洗牌參與者清單 shuffled = participants.copy() random.shuffle(shuffled) # 分發獎品 winners = {} for i, prize in enumerate(prizes): winners[shuffled[i]] = prize print("🎉 抽獎結果 🎉") for winner, prize in winners.items(): print(f"{winner} 獲得了 {prize}!") # 使用範例 players = ["勇者", "法師", "弓箭手", "盜賊", "牧師"] rewards = ["傳說之劍", "魔法法杖", "神速之弓"] treasure_lottery(players, rewards) ```

### 二元搜尋(需要排序的清單) ```python def binary_search(sorted_list, target): """二元搜尋(更快速)""" left, right = 0, len(sorted_list) - 1 while left <= right: mid = (left + right) // 2 if sorted_list[mid] == target: return mid elif sorted_list[mid] < target: left = mid + 1 else: right = mid - 1 return -1 ```

--- ## 📈 效能優化技巧 ### 清單 vs 其他資料結構的選擇 ```python import time # 在清單末尾添加元素:O(1) - 很快 def test_append_performance(): treasure_list = [] start = time.time() for i in range(100000): treasure_list.append(f"寶物{i}") end = time.time() print(f"添加10萬個元素耗時: {end - start:.4f} 秒") # 在清單開頭插入元素:O(n) - 較慢 def test_insert_performance(): treasure_list = [] start = time.time() for i in range(1000): # 注意:只測試1000個 treasure_list.insert(0, f"寶物{i}") end = time.time() print(f"在開頭插入1000個元素耗時: {end - start:.4f} 秒") ```

--- ## 🎨 創意專案:ASCII 寶物展示 ```python def display_treasure_ascii(treasures): """用ASCII藝術展示寶物""" treasure_art = { "金幣": "💰", "寶石": "💎", "劍": "⚔️", "盾": "🛡️", "書": "📚", "藥水": "🧪" } print("🏛️ === 寶物展示館 === 🏛️") print("┌" + "─" * 40 + "┐") for i, treasure in enumerate(treasures, 1): # 找出對應的圖示 icon = "📦" # 預設圖示 for key, art in treasure_art.items(): if key in treasure: icon = art break print(f"│ {i:2d}. {icon} {treasure:<30} │") print("└" + "─" * 40 + "┘") # 使用範例 my_treasures = ["古老金幣", "龍血寶石", "傳說之劍", "魔法盾牌", "咒語書", "治療藥水"] display_treasure_ascii(my_treasures) ```

## 🏆 實作專案:寶物收集管理系統 讓我們建立一個完整的寶物管理系統! ```python class TreasureManager: def __init__(self): self.treasures = [] self.total_value = 0 def add_treasure(self, name, value): """添加新寶物""" treasure = {"name": name, "value": value} self.treasures.append(treasure) self.total_value += value print(f"✅ 成功添加寶物: {name} (價值: {value})") def remove_treasure(self, name): """移除寶物""" for treasure in self.treasures: if treasure["name"] == name: self.treasures.remove(treasure) self.total_value -= treasure["value"] print(f"🗑️ 成功移除寶物: {name}") return print(f"❌ 找不到寶物: {name}") ``` --- ## 💎 寶物管理系統 - 完整版 ```python def search_treasure(self, keyword): """搜尋寶物""" found = [] for treasure in self.treasures: if keyword.lower() in treasure["name"].lower(): found.append(treasure) return found def show_inventory(self): """顯示所有寶物""" print("\n🎒 === 寶物清單 ===") if not self.treasures: print("背包是空的!") return for i, treasure in enumerate(self.treasures, 1): print(f"{i}. {treasure['name']} - 價值: {treasure['value']}") print(f"\n💰 總價值: {self.total_value}") def get_most_valuable(self): """找出最有價值的寶物""" if not self.treasures: return None return max(self.treasures, key=lambda x: x["value"]) ``` --- ## 🎮 互動式寶物管理系統 ```python def main(): manager = TreasureManager() while True: print("\n🏰 === 寶物管理系統 ===") print("1. 添加寶物") print("2. 移除寶物") print("3. 搜尋寶物") print("4. 顯示清單") print("5. 最有價值寶物") print("6. 離開") choice = input("\n請選擇操作 (1-6): ") if choice == "1": name = input("寶物名稱: ") value = int(input("寶物價值: ")) manager.add_treasure(name, value) elif choice == "4": manager.show_inventory() # 執行程式 if __name__ == "__main__": main() ```

--- ## ✨ 進階練習:寶物統計分析 ```python def analyze_treasures(treasure_list): """分析寶物收集統計""" if not treasure_list: print("沒有寶物可以分析!") return # 計算統計資料 values = [t["value"] for t in treasure_list] stats = { "總數量": len(treasure_list), "總價值": sum(values), "平均價值": sum(values) / len(values), "最高價值": max(values), "最低價值": min(values) } print("\n📊 === 寶物統計分析 ===") for key, value in stats.items(): if "價值" in key: print(f"{key}: {value:.2f}") else: print(f"{key}: {value}") ```

--- ## 🏆 挑戰任務:超級寶物管理器 建立一個進階的寶物管理系統,包含以下功能: ```python class AdvancedTreasureManager: def __init__(self): self.treasures = [] self.categories = {} self.history = [] # 挑戰1: 實作分類管理 def add_category(self, category_name): pass # 你來實作 # 挑戰2: 實作寶物評級系統 def rate_treasure(self, treasure_name, rating): pass # 你來實作 # 挑戰3: 實作交易歷史記錄 def trade_treasure(self, treasure_name, trader_name): pass # 你來實作 # 挑戰4: 實作寶物推薦系統 def recommend_treasures(self, user_preferences): pass # 你來實作 ```

### 🌟 重點回顧: - 清單是Python中最重要的資料結構之一 - 索引從0開始,負索引從-1開始 - 善用切片可以高效處理資料批次操作 - 選擇適當的方法來達成不同的操作需求

```python # 書籍清單 books = [] # 添加書籍 books.append("Python 程式設計") books.append("資料結構與演算法") books.append("人工智慧導論") books.append("機器學習基礎") books.append("深度學習應用") # 搜尋書籍 keyword = "人工" search_results = [book for book in books if keyword in book] print("搜尋結果:") for book in search_results: print(book) # 移除書籍 books.remove("資料結構與演算法") # 顯示所有書籍 print("\n目前書籍清單:") for book in books: print(book) ```

**評分重點:** - 創意性和實用性 (40%) - 程式碼品質和結構 (30%) - 功能完整性 (20%) - 使用者體驗設計 (10%)