Python剧场奇遇记:代码舞台的魔法之夜
```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的核心概念如何转化为有趣的互动叙事,每个编程概念都成为了故事中的"魔法技能"。尝试运行多次,做出不同选择,体验各种结局吧!
更多推荐



所有评论(0)