```python
# -*- coding: utf-8 -*-
"""
《Python剧场奇遇记》
一个用Python基础知识编写的互动小故事
"""

class Character:
    """角色类:创建剧场角色"""
    
    def __init__(self, name, role, special_skill):
        self.name = name
        self.role = role
        self.special_skill = special_skill
        self.energy = 100  # 初始能量值
        
    def perform(self, skill_level=1):
        """表演方法"""
        if self.energy >= 20:
            self.energy -= 20 * skill_level
            print(f"{self.name}正在表演{self.role},使用技能:{self.special_skill}!")
            return True
        else:
            print(f"{self.name}太累了,需要休息...")
            return False
            
    def rest(self):
        """休息恢复能量"""
        self.energy = min(100, self.energy + 30)
        print(f"{self.name}休息后,能量恢复至{self.energy}%")

def stage_lights(light_mode):
    """舞台灯光效果函数"""
    lights = {
        "浪漫": "💖 粉紫色渐变灯光,花瓣缓缓飘落",
        "紧张": "🔦 聚光灯快速闪烁,心跳声效响起",
        "欢乐": "🌈 七彩旋转灯光,欢快音乐播放",
        "神秘": "🌌 深蓝色星空灯光,薄雾弥漫"
    }
    return lights.get(light_mode, "💡 基础白光照明")

def main_story():
    """主剧情函数"""
    
    # 创建剧场角色
    hero = Character("码小智", "Python程序员", "代码魔法")
    heroine = Character("程小序", "AI助手", "智能分析")
    villain = Character("Bug怪", "程序漏洞", "错误攻击")
    
    print("="*50)
    print("🎭 欢迎来到Python魔法剧场 🎪")
    print("="*50)
    print("\n【第一幕:危机降临】")
    print(stage_lights("紧张"))
    print("深夜,码小智正在修复一个关键程序...")
    print("突然!Bug怪从屏幕中跳出:")
    print(f"{villain.name}: 哈哈哈!我要让所有程序崩溃!")
    
    # 用户选择行动
    choices = {
        '1': "尝试修复bug",
        '2': "召唤AI助手",
        '3': "重启电脑(经典解决方案)"
    }
    
    print("\n你会选择:")
    for key, value in choices.items():
        print(f"{key}. {value}")
    
    choice = input("输入选项 (1/2/3): ")
    
    # 处理用户选择
    if choice == '1':
        print("\n💻 码小智尝试直接修复...")
        if hero.perform():
            print("暂时阻止了Bug怪,但未能彻底解决!")
        else:
            print("能量不足,修复失败!")
    elif choice == '2':
        print("\n🤖 码小智召唤AI助手程小序!")
        if heroine.perform(2):  # 使用技能等级2
            print("程小序分析出Bug怪的弱点:缺少异常处理!")
        else:
            print("AI助手能量不足!")
    elif choice == '3':
        print("\n🔄 码小智选择了经典解决方案:重启!")
        print("系统重启中...Bug怪暂时消失,但问题根源仍在!")
    else:
        print("\n⚠️ 无效选择!Bug怪趁机发动攻击!")
        hero.energy -= 30
    
    print("\n【第二幕:联手对抗】")
    print(stage_lights("神秘"))
    print("程小序提出合作方案:")
    
    # 使用数据结构存储解决方案
    solutions = [
        {"method": "try-except防护罩", "effect": "吸收错误攻击"},
        {"method": "单元测试剑", "effect": "定位漏洞位置"},
        {"method": "调试器追踪弹", "effect": "精确打击核心"}
    ]
    
    print("可用的Python武器:")
    for i, sol in enumerate(solutions, 1):
        print(f"武器{i}: {sol['method']} - {sol['effect']}")
    
    # 用户选择武器
    weapon_choice = input("选择武器 (1/2/3): ")
    
    try:
        weapon_idx = int(weapon_choice) - 1
        selected_weapon = solutions[weapon_idx]
        print(f"\n⚔️ 使用{selected_weapon['method']}!{selected_weapon['effect']}!")
        
        # 战斗结果
        damage = (weapon_idx + 1) * 25
        villain.energy -= damage
        print(f"对Bug怪造成{damage}点伤害!")
        
    except (ValueError, IndexError):
        print("\n⚠️ 无效选择!错失攻击机会!")
    
    print("\n【第三幕:最终决战】")
    print(stage_lights("浪漫") if villain.energy <= 30 else stage_lights("紧张"))
    
    # 根据剩余能量决定结局
    if villain.energy <= 0:
        print(f"🎉 {hero.name}和{heroine.name}彻底消灭了Bug怪!")
        print("系统恢复正常,所有数据安全!")
        print("剧场观众起立鼓掌 👏👏👏")
    elif villain.energy <= 30:
        print(f"⚡ {hero.name}使用终极技能:封装大法!")
        print("将Bug怪封印在独立模块中!")
        print("危机暂时解除,但需要持续监控...")
    else:
        print(f"💥 Bug怪发动最终攻击!{hero.name}的能量只剩{hero.energy}%")
        print("系统崩溃... 剧场陷入黑暗")
        print("未完待续...")
    
    print("\n" + "="*50)
    print("🎬 故事结束,但你的Python之旅才刚刚开始!")
    print("="*50)

# 启动故事
if __name__ == "__main__":
    main_story()
```

## 故事中应用的Python知识

1. **类与对象**:
```python
class Character:
    def __init__(self, name, role, special_skill):
        self.name = name
        # ...其他属性...
```

2. **条件判断**:
```python
if villain.energy <= 0:
    # 胜利结局
elif villain.energy <= 30:
    # 平局结局
else:
    # 失败结局
```

3. **字典与数据结构**:
```python
lights = {
    "浪漫": "💖 粉紫色渐变灯光...",
    "紧张": "🔦 聚光灯快速闪烁..."
}
```

4. **异常处理**:
```python
try:
    weapon_idx = int(weapon_choice) - 1
    selected_weapon = solutions[weapon_idx]
except (ValueError, IndexError):
    print("无效选择!")
```

5. **列表与循环**:
```python
solutions = [
    {"method": "try-except防护罩", "effect": "吸收错误攻击"},
    # ...其他武器...
]

for i, sol in enumerate(solutions, 1):
    print(f"武器{i}: {sol['method']}")
```

6. **函数封装**:
```python
def stage_lights(light_mode):
    # 返回对应的灯光效果
    return lights.get(light_mode, "💡 基础白光照明")
```

## 如何运行这个故事

1. 将代码保存为 `theater_story.py`
2. 在终端运行:
```bash
python theater_story.py
```
3. 根据提示做出选择,体验不同的故事结局!

这个故事展示了Python的核心概念如何转化为有趣的互动叙事,每个编程概念都成为了故事中的"魔法技能"。尝试运行多次,做出不同选择,体验各种结局吧!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐