[遊戲化學習] Python變數冒險:第1章 資料類型探險 🎮

  • Post by
  • Dec 15, 2023
post-thumb

🎮 歡迎來到變數王國!

🌟 冒險背景故事

在神秘的Python王國中,變數是最強大的魔法道具。作為新手冒險者,你需要掌握四大基礎魔法類型:整數戰士字串法師布林值巫師浮點數精靈。只有集齊這四種力量,才能成為真正的變數大師!

graph TD A[🎮 開始變數冒險] --> B[📚 認識變數基礎] B --> C[⚔️ 整數戰士關卡] B --> D[🎭 字串法師關卡] B --> E[🔮 布林值巫師關卡] B --> F[🌊 浮點數精靈關卡] C --> G[💫 變數運算競技場] D --> G E --> G F --> G G --> H[🔄 類型轉換煉金術] H --> I[👑 最終Boss挑戰] I --> J[🏆 變數大師認證!] style A fill:#ff6b6b,stroke:#000,color:#fff style J fill:#51cf66,stroke:#000,color:#fff

📋 冒險前的裝備檢查

# 🎒 冒險者初始裝備
print("=" * 50)
print("🎮 Python變數冒險 - 角色創建 🎮")
print("=" * 50)

# 創建你的冒險者
adventurer_name = "新手冒險者"  # 你的名字
level = 1                    # 當前等級
exp = 0                      # 經驗值
hp = 100                     # 生命值
mp = 50                      # 魔法值
is_ready = True              # 準備狀態

print(f"🧙‍♂️ 冒險者: {adventurer_name}")
print(f"⭐ 等級: {level}")
print(f"❤️  生命值: {hp}")
print(f"💙 魔法值: {mp}")
print(f"✅ 準備狀態: {'已準備' if is_ready else '未準備'}")

🏰 第一關:變數類型王國地圖

📊 四大種族介紹表

🏷️ 種族類型🎨 特徵描述💡 魔法範例🔧 常用技能
🗡️ 整數戰士 (int)堅強不屈,永遠完整strength = 85計算、計數、索引
🌊 浮點數精靈 (float)精確靈活,擅長精密計算accuracy = 87.5測量、比率、科學計算
🎭 字串法師 (str)善於溝通,掌控文字spell = "火球術"文本處理、訊息傳遞
🔮 布林值巫師 (bool)二元智慧,真假之主is_magic = True邏輯判斷、條件控制
複數煉金術士 (complex)神秘莫測,超越現實portal = 3+4j高等數學、工程計算

🎯 實戰演練:召喚你的第一個變數軍團

# 🌟 召喚儀式開始!
print("\n🌟 開始召喚變數夥伴...")

# 整數戰士 - 強壯可靠
warrior_hp = 120
warrior_attack = 45
print(f"⚔️  整數戰士召喚成功!HP: {warrior_hp}, 攻擊力: {warrior_attack}")

# 浮點數精靈 - 精準敏捷  
elf_speed = 89.7
elf_accuracy = 0.95
print(f"🧚‍♀️ 浮點數精靈降臨!速度: {elf_speed}, 命中率: {elf_accuracy}")

# 字串法師 - 智慧博學
mage_name = "艾莉西亞"
mage_spell = "冰霜新星"
print(f"🔮 字串法師 {mage_name} 準備施展 '{mage_spell}'")

# 布林值巫師 - 真假之主
is_blessed = True
can_fly = False  
print(f"🎭 布林值巫師狀態 - 祝福: {is_blessed}, 飛行: {can_fly}")

⚔️ 第二關:類型轉換煉金工坊

🧪 煉金術基礎配方

print("\n🧪 歡迎來到類型轉換煉金工坊!")
print("=" * 40)

# 原始材料
gold_ore = "500"      # 字串形式的金礦石
silver_dust = 25.8    # 浮點數銀粉
magic_gems = True     # 布林值魔法寶石

print("📦 原始材料清單:")
print(f"  金礦石(str): '{gold_ore}'")
print(f"  銀粉(float): {silver_dust}")  
print(f"  魔法寶石(bool): {magic_gems}")

# 🔄 煉金轉換過程
print("\n⚡ 開始煉金轉換...")

# 字串 → 整數
pure_gold = int(gold_ore)
print(f"✨ 金礦石提純: '{gold_ore}' → {pure_gold} 金幣")

# 浮點數 → 整數 (小數部分會消失!)
solid_silver = int(silver_dust)
print(f"🔨 銀粉固化: {silver_dust}{solid_silver} 銀塊")

# 布林值 → 整數 (True=1, False=0)
gem_power = int(magic_gems)
print(f"💎 寶石能量轉換: {magic_gems}{gem_power} 點能量")

# 計算總財富
total_wealth = pure_gold + solid_silver + gem_power
print(f"\n💰 總財富: {total_wealth} 金幣等值")

⚠️ 煉金術警告與技巧

# 🚨 危險的轉換實驗
print("\n⚠️  煉金術安全提醒:")

try:
    # 這會發生錯誤!
    wrong_conversion = int("魔法石")
except ValueError as e:
    print(f"❌ 轉換失敗: 無法將 '魔法石' 轉為整數")

# ✅ 安全的轉換方法
safe_number = "123"
if safe_number.isdigit():
    converted = int(safe_number)
    print(f"✅ 安全轉換: '{safe_number}' → {converted}")

🏟️ 第三關:變數運算競技場

🎪 數學魔法表演

print("\n🎪 歡迎來到變數運算競技場!")
print("觀眾們,請欣賞精彩的數學魔法表演!")

# 🎭 表演道具準備
magic_box_a = 15
magic_box_b = 7
magic_multiplier = 2.5

print(f"\n🎩 魔術師拿出兩個魔法盒:")
print(f"   盒子A: {magic_box_a}")
print(f"   盒子B: {magic_box_b}")

# 🎪 開始表演
print("\n✨ 魔法表演開始...")
addition_magic = magic_box_a + magic_box_b
print(f"➕ 加法魔法: {magic_box_a} + {magic_box_b} = {addition_magic}")

subtraction_magic = magic_box_a - magic_box_b  
print(f"➖ 減法魔法: {magic_box_a} - {magic_box_b} = {subtraction_magic}")

multiplication_magic = magic_box_a * magic_multiplier
print(f"✖️  乘法魔法: {magic_box_a} × {magic_multiplier} = {multiplication_magic}")

division_magic = magic_box_a / magic_box_b
print(f"➗ 除法魔法: {magic_box_a} ÷ {magic_box_b} = {division_magic:.2f}")

# 🎊 高級魔法
power_magic = magic_box_a ** 2
remainder_magic = magic_box_a % magic_box_b
print(f"⚡ 乘方魔法: {magic_box_a}² = {power_magic}")
print(f"🔄 餘數魔法: {magic_box_a} % {magic_box_b} = {remainder_magic}")

🎯 第四關:互動挑戰副本

🏰 初級副本:角色創建系統

def create_character():
    """🎮 RPG角色創建系統"""
    print("\n🏰 歡迎來到角色創建神殿!")
    print("=" * 35)
    
    # 收集玩家資訊
    name = input("🧙‍♂️ 請輸入角色名稱: ")
    
    # 年齡驗證與處理
    while True:
        try:
            age = int(input("🎂 請輸入角色年齡: "))
            if age > 0:
                break
            else:
                print("❌ 年齡必須是正數!")
        except ValueError:
            print("❌ 請輸入有效的數字!")
    
    # 職業選擇
    print("\n⚔️  選擇職業:")
    print("1. 戰士 2. 法師 3. 弓箭手")
    job_choice = input("輸入選擇 (1-3): ")
    
    jobs = {"1": "戰士", "2": "法師", "3": "弓箭手"}
    job = jobs.get(job_choice, "冒險者")
    
    # 計算初始屬性
    base_hp = 100 + age * 2
    base_mp = 50 + len(name) * 5
    
    # 職業加成
    if job == "戰士":
        base_hp += 50
    elif job == "法師":  
        base_mp += 50
    elif job == "弓箭手":
        base_hp += 25
        base_mp += 25
    
    # 顯示角色資訊
    print("\n🌟 角色創建完成!")
    print("=" * 30)
    print(f"👤 姓名: {name}")
    print(f"🎂 年齡: {age} 歲")
    print(f"⚔️  職業: {job}")
    print(f"❤️  生命值: {base_hp}")
    print(f"💙 魔法值: {base_mp}")
    
    return name, age, job, base_hp, base_mp

# 執行角色創建
# character_info = create_character()

🏺 中級副本:寶藏評估系統

def treasure_evaluator():
    """💰 智能寶藏評估系統"""
    print("\n💰 歡迎來到寶藏評估中心!")
    print("請輸入您發現的寶藏資訊...")
    
    treasures = []
    total_value = 0
    
    # 收集寶藏資訊
    items = ["金幣", "銀幣", "寶石", "古董"]
    
    for item in items:
        while True:
            try:
                amount = input(f"💎 {item}數量 (輸入0跳過): ")
                amount = float(amount) if '.' in amount else int(amount)
                if amount >= 0:
                    break
                else:
                    print("❌ 數量不能為負數!")
            except ValueError:
                print("❌ 請輸入有效的數字!")
        
        if amount > 0:
            # 設定基礎價值
            base_values = {"金幣": 1, "銀幣": 0.1, "寶石": 50, "古董": 200}
            value = amount * base_values[item]
            treasures.append((item, amount, value))
            total_value += value
    
    # 顯示評估結果
    print("\n📊 寶藏評估報告")
    print("=" * 40)
    
    if treasures:
        for item, amount, value in treasures:
            print(f"💎 {item}: {amount} 件 (價值: {value:.2f} 金幣)")
        
        print("-" * 40)
        print(f"💰 總價值: {total_value:.2f} 金幣")
        
        # 評級系統
        if total_value >= 1000:
            grade = "傳說級寶藏 🏆"
        elif total_value >= 500:
            grade = "稀有寶藏 💎"
        elif total_value >= 100:
            grade = "普通寶藏 💰"
        else:
            grade = "新手寶藏 🎁"
            
        print(f"🏷️  寶藏等級: {grade}")
    else:
        print("😅 沒有發現任何寶藏...")

# 執行寶藏評估
# treasure_evaluator()

🧙‍♂️ 高級副本:類型偵測大師

def type_detective():
    """🔍 變數類型偵探遊戲"""
    print("\n🔍 歡迎來到類型偵探事務所!")
    
    # 神秘的證據收集
    evidence = [
        42,           # 整數線索
        3.14159,      # 浮點數線索  
        "密碼",        # 字串線索
        True,         # 布林值線索
        2+3j,         # 複數線索
        [1,2,3],      # 列表線索
        {"key": "value"}  # 字典線索
    ]
    
    print("📋 發現以下神秘證據,請進行類型分析...")
    print("=" * 50)
    
    type_count = {}
    
    for i, item in enumerate(evidence, 1):
        item_type = type(item).__name__
        
        # 類型圖標映射
        type_icons = {
            'int': '🔢',
            'float': '🌊', 
            'str': '📝',
            'bool': '🔮',
            'complex': '⚡',
            'list': '📋',
            'dict': '📚'
        }
        
        icon = type_icons.get(item_type, '❓')
        
        print(f"{icon} 證據 #{i}: {item} → 類型: {item_type}")
        
        # 統計類型
        type_count[item_type] = type_count.get(item_type, 0) + 1
    
    # 顯示統計結果
    print("\n📊 偵探報告 - 類型統計:")
    print("-" * 30)
    for type_name, count in type_count.items():
        icon = type_icons.get(type_name, '❓')
        print(f"{icon} {type_name}: {count} 個")
    
    print(f"\n🏆 恭喜!您成功分析了 {len(evidence)} 個證據!")

# 執行類型偵探
# type_detective()

🏆 第五關:最終Boss挑戰

👑 變數大師認證考試

def master_certification():
    """🎓 變數大師認證系統"""
    print("\n👑 變數大師認證考試")
    print("=" * 40)
    
    score = 0
    max_score = 5
    
    # 考題1: 類型識別
    print("\n📚 考題1: 類型識別 (1分)")
    test_var = 42.0
    answer = input(f"變數 {test_var} 的類型是? (int/float/str/bool): ")
    if answer.lower() == 'float':
        score += 1
        print("✅ 正確!")
    else:
        print(f"❌ 錯誤!正確答案是 float")
    
    # 考題2: 類型轉換
    print("\n🔄 考題2: 類型轉換 (1分)")
    print("int('123') 的結果是?")
    try:
        answer = int(input("請輸入答案: "))
        if answer == 123:
            score += 1
            print("✅ 正確!")
        else:
            print("❌ 錯誤!正確答案是 123")
    except:
        print("❌ 錯誤!正確答案是 123")
    
    # 考題3: 運算結果
    print("\n➕ 考題3: 運算計算 (1分)")
    print("15 // 4 的結果是?")
    try:
        answer = int(input("請輸入答案: "))
        if answer == 3:
            score += 1
            print("✅ 正確!")
        else:
            print("❌ 錯誤!正確答案是 3 (整數除法)")
    except:
        print("❌ 錯誤!正確答案是 3")
    
    # 考題4: 布林值運算
    print("\n🔮 考題4: 布林值邏輯 (1分)")
    print("True and False 的結果是? (True/False)")
    answer = input("請輸入答案: ")
    if answer.lower() == 'false':
        score += 1
        print("✅ 正確!")
    else:
        print("❌ 錯誤!正確答案是 False")
    
    # 考題5: 綜合應用
    print("\n🎯 考題5: 綜合應用 (1分)")
    print("str(100) + str(200) 的結果是?")
    answer = input("請輸入答案: ")
    if answer == '100200':
        score += 1
        print("✅ 正確!")
    else:
        print("❌ 錯誤!正確答案是 '100200'")
    
    # 計算成績
    percentage = (score / max_score) * 100
    
    print(f"\n🎓 考試結果")
    print("=" * 25)
    print(f"📊 得分: {score}/{max_score} ({percentage:.1f}%)")
    
    if percentage >= 90:
        rank = "🏆 變數大師"
        message = "恭喜您!已達到大師級水準!"
    elif percentage >= 70:
        rank = "⭐ 變數專家"
        message = "表現優秀!繼續加油!"
    elif percentage >= 50:
        rank = "📚 變數學徒"
        message = "基礎不錯,還需多加練習!"
    else:
        rank = "🌱 變數新手"
        message = "建議重新學習基礎概念!"
    
    print(f"🏷️  認證等級: {rank}")
    print(f"💬 評語: {message}")

# 執行認證考試
# master_certification()

📈 學習進度追蹤圖表

graph LR A[🌱 變數新手
0-25%] --> B[📚 變數學徒
26-50%] B --> C[⭐ 變數專家
51-75%] C --> D[🏆 變數大師
76-100%] A -.->|需要加強| E[重新學習基礎] B -.->|繼續努力| F[多做練習] C -.->|接近目標| G[挑戰進階] D -.->|恭喜完成| H[開始下一章] style A fill:#ffeccf style B fill:#e3f2fd style C fill:#f3e5f5 style D fill:#e8f5e8

🎯 成就系統與徽章收集

🏅 可獲得成就

  • 🔰 新手上路: 完成第一個變數宣告
  • 🔄 轉換達人: 成功進行10次類型轉換
  • 🧮 計算專家: 完成所有運算挑戰
  • 🔍 類型偵探: 正確識別所有資料類型
  • 🎓 認證大師: 通過最終認證考試
  • 🌟 完美通關: 所有關卡滿分通過

📝 學習檢查清單

  • ✅ 理解變數的概念和作用
  • 🔢 掌握整數(int)的特性和用法
  • 🌊 了解浮點數(float)的精確度問題
  • 📝 熟練字串(str)的基本操作
  • 🔮 理解布林值(bool)的邏輯運算
  • ⚡ 認識複數(complex)的基礎概念
  • 🔄 掌握各種類型轉換方法
  • 🧮 能夠進行基本變數運算
  • 🎯 完成所有互動挑戰
  • 🏆 通過變數大師認證

🚀 下一步學習建議

  1. 條件判斷與邏輯運算 - 學習 if/elif/else 語句
  2. 迴圈結構 - 掌握 for 和 while 迴圈
  3. 函數定義 - 學習創建可重複使用的程式碼
  4. 資料結構 - 探索 list、dict、tuple 等容器
  5. 檔案操作 - 學習讀寫外部檔案

💡 進階思考題

🤔 實務應用思考

  1. 遊戲開發場景:

    • 玩家血量用什麼資料類型最合適?為什麼?
    • 如何設計一個升級系統的經驗值計算?
  2. 生活應用場景:

    • 設計一個智能家電控制系統需要哪些變數類型?
    • 購物網站的商品價格應該用什麼資料類型?
  3. 效能優化思考:

    • 什麼情況下使用整數比浮點數更有效率?
    • 如何選擇最適合的資料類型來節省記憶體?

🎮 創意延伸專案

  • 🏪 虛擬商店系統: 結合所學知識創建一個簡單的購物系統
  • 🎲 骰子遊戲: 設計一個使用各種變數類型的擲骰子遊戲
  • 📊 個人財務管理: 創建一個記錄收支的小程式
  • 🌡️ 溫度轉換器: 製作攝氏與華氏溫度互轉工具

🎉 恭喜您完成Python變數冒險第1章!

您已經成功掌握了Python程式設計的基礎魔法。現在您擁有了強大的變數操控能力,準備好迎接更刺激的程式冒險了嗎?

下一章我們將探索「條件判斷與邏輯冒險」,學習如何讓程式做出智慧的決策!

🌟 記住:每一位程式大師都是從變數開始的,您已經踏出了重要的第一步!

LATEST POST
TAG