🟡 副驾驶 🤖 指导下操作

📜 第 6 课:侠客档案

第 6 课:📜 侠客档案

🎯 学习目标

  • 掌握字典 dict 的基本操作(创建、键值对、get、keys/values/items、遍历)
  • 了解元组 tuple(不可变的列表)
  • 用字典整合侠客和妖怪的数据

📚 家长预习指南(5 分钟)

本课核心要点

  • hero = {"名字": "小龙", "生命值": 100} — 字典就像一个"档案卡",用名字查信息
  • hero["生命值"] — 通过键查询对应的值
  • hero.get("银两", 0) — 安全查询,找不到就用默认值
  • (name, desc) — 元组,不可变的组合,用于配对数据
  • 之前用多个变量存侠客数据,现在用一个字典整合在一起

您的角色

🟡 副驾驶


🔗 Scratch ↔ Python 对照

Scratch 概念 Python 代码 说明
多个变量(name, hp, attack...) hero = {"name": ..., "hp": ...} 用字典组织在一起
列表只能放一种数据 字典可以存不同类型的数据 键值对更灵活

📖 活动模块

模块 A — 字典的好处(15 分钟)

目标

把散乱的变量整合为字典

展示对比:"之前我们用 name, hp, attack, silver 四个变量存侠客数据,乱不乱?用字典一下子整合起来!"

hero = {
    "name": name,
    "hp": 100,
    "max_hp": 100,
    "attack": 15,
    "silver": 0,
    "backpack": [],
    "battles_won": 0,
    "adventures": 0
}
print(f"侠客:{hero['name']}  生命值:{hero['hp']}")

模块 B — 妖怪图鉴(20 分钟)

目标

用字典列表定义多种妖怪,用元组存储 (名称, 描述)

monsters = [
    {"name": "狐妖", "hp": 30, "attack": 8, "silver_drop": 10},
    {"name": "山魅", "hp": 40, "attack": 12, "silver_drop": 15},
    {"name": "火鸦", "hp": 50, "attack": 15, "silver_drop": 20},
]
monster = random.choice(monsters)
print(f"遇到了{monster['name']}!")

模块 C — 侠客状态卡(10 分钟)

目标

用格式化打印展示完整属性卡

print(f"╔{'═' * 30}╗")
print(f"║  📋 侠客状态卡")
print(f"║  姓名:{hero['name']}")
print(f"║  生命值:{hero['hp']}/{hero['max_hp']}")
print(f"║  武力值:{hero['attack']}")
print(f"║  银两:{hero['silver']}")
print(f"╚{'═' * 30}╝")

🎮 运行游戏:漂亮的状态卡打印是本课的 fun moment!


🤖 AI 环节(指导下操作)

阶段

🟡 指导下操作

任务

孩子在家长指导下问 AI 设计妖怪属性

示例提示词

帮我设计 3 种中国神话妖怪的属性数据,包括名称、生命值、攻击力、掉落银两,用 Python 字典格式。


✅ 最小完成目标

  • [ ] 侠客数据用字典存储
  • [ ] 妖怪数据用字典列表管理
  • [ ] 能打印侠客状态卡

⭐ 扩展挑战

  • 让孩子自己设计新妖怪数据加入字典列表
  • 用元组 ("狐妖", "狡猾的精灵") 存储名称和描述

🐛 常见错误提示

错误 原因 解决
KeyError 字典中没有这个键 dict.get(key, default) 安全访问
SyntaxError 字典的键忘了加引号 字符串键要用引号包裹

💻 代码查看

# ==========================================
# 🎮 少年侠客闯江湖 - 第 6 课
# 📚 本课知识点:字典 dict、元组 tuple
# ==========================================

import random

# --- 开场 ---
print("=" * 40)
print("  ⚔️  少年侠客闯江湖  ⚔️")
print("=" * 40)

name = input("\n少年侠客,请赐名:")

# TODO: 把之前的散乱变量改为一个字典
# 提示:hero = {"name": name, "hp": 100, "max_hp": 100, ...}

# TODO: 用字典列表定义多种妖怪
# 提示:monsters = [{"name": "狐妖", "hp": 30, ...}, ...]

# TODO: 用字典存 NPC 数据和谜语

# (以下为前面课程的游戏逻辑,改用字典访问)
# 注意:之前的 hp 要改成 hero["hp"]