🛡️ 控制结构教程
就像在王者荣耀中掌握连招和战术选择,这里我们将学习Python的条件判断和循环结构!
🎯 条件语句 - 战斗决策
💡 游戏比喻
条件语句就像游戏中的战斗决策:根据敌人血量、技能冷却等情况,选择不同的战术。
⚔️ if 语句 - 基础判断
# 判断是否攻击敌人
敌人血量 = 300
技能冷却 = False
if 敌人血量 < 500 and not 技能冷却:
print("发动致命一击!")
造成伤害 = 200
敌人血量 -= 造成伤害
else:
print("等待更好的时机...")
print(f"敌人剩余血量:{敌人血量}")
敌人血量 = 300
技能冷却 = False
if 敌人血量 < 500 and not 技能冷却:
print("发动致命一击!")
造成伤害 = 200
敌人血量 -= 造成伤害
else:
print("等待更好的时机...")
print(f"敌人剩余血量:{敌人血量}")
🛡️ elif 语句 - 多重选择
# 根据血量选择战术
英雄血量 = 400
if 英雄血量 > 800:
print("血量充足,主动进攻!")
战术 = "进攻"
elif 英雄血量 > 300:
print("血量中等,谨慎作战")
战术 = "防守"
elif 英雄血量 > 100:
print("血量危险,准备撤退")
战术 = "撤退"
else:
print("血量过低,立即回城!")
战术 = "回城"
print(f"当前战术:{战术}")
英雄血量 = 400
if 英雄血量 > 800:
print("血量充足,主动进攻!")
战术 = "进攻"
elif 英雄血量 > 300:
print("血量中等,谨慎作战")
战术 = "防守"
elif 英雄血量 > 100:
print("血量危险,准备撤退")
战术 = "撤退"
else:
print("血量过低,立即回城!")
战术 = "回城"
print(f"当前战术:{战术}")
📊 条件语句执行流程
1. 检查条件1
→
条件成立?
2. 是 → 执行代码块1
→
结束
3. 否 → 检查条件2
→
条件成立?
4. 是 → 执行代码块2
→
结束
5. 否 → 执行else代码块
→
结束
🔄 循环结构 - 持续输出
💡 游戏比喻
循环就像游戏中的连招技能,可以重复执行相同的操作,实现持续输出。
🎯 for 循环 - 精确控制
# 使用技能连招
技能列表 = ["一技能", "二技能", "大招", "普攻"]print("开始连招攻击!")
for 技能 in 技能列表:
print(f"释放:{技能}")
# 使用range控制攻击次数
print("\n连续攻击3次:")
for i in range(3):
print(f"第{i+1}次攻击!")
技能列表 = ["一技能", "二技能", "大招", "普攻"]
for 技能 in 技能列表:
print(f"释放:{技能}")
# 使用range控制攻击次数
print("\n连续攻击3次:")
for i in range(3):
print(f"第{i+1}次攻击!")
⚡ while 循环 - 条件循环
# 持续攻击直到敌人死亡
敌人血量 = 1000
攻击次数 = 0
单次伤害 = 150
while 敌人血量 > 0:
攻击次数 += 1
敌人血量 -= 单次伤害
print(f"第{攻击次数}次攻击,敌人剩余血量:{敌人血量}")
# 防止无限循环
if 攻击次数 > 10:
print("敌人过于强大,撤退!")
break
if 敌人血量 <= 0:
print(f"胜利!共攻击{攻击次数}次")
敌人血量 = 1000
攻击次数 = 0
单次伤害 = 150
while 敌人血量 > 0:
攻击次数 += 1
敌人血量 -= 单次伤害
print(f"第{攻击次数}次攻击,敌人剩余血量:{敌人血量}")
# 防止无限循环
if 攻击次数 > 10:
print("敌人过于强大,撤退!")
break
if 敌人血量 <= 0:
print(f"胜利!共攻击{攻击次数}次")
# 循环控制语句
# break - 立即退出循环
# continue - 跳过本次循环
技能冷却时间 = [3, 5, 0, 8, 2] # 0表示技能可用
print("检查技能状态:")
for 冷却时间 in 技能冷却时间:
if 冷却时间 == 0:
print("发现可用技能,立即使用!")
break # 找到可用技能就停止检查
elif 冷却时间 > 5:
print(f"技能冷却时间过长({冷却时间}秒),跳过")
continue # 跳过冷却时间过长的技能
else:
print(f"技能冷却中,剩余{冷却时间}秒")
# break - 立即退出循环
# continue - 跳过本次循环
技能冷却时间 = [3, 5, 0, 8, 2] # 0表示技能可用
print("检查技能状态:")
for 冷却时间 in 技能冷却时间:
if 冷却时间 == 0:
print("发现可用技能,立即使用!")
break # 找到可用技能就停止检查
elif 冷却时间 > 5:
print(f"技能冷却时间过长({冷却时间}秒),跳过")
continue # 跳过冷却时间过长的技能
else:
print(f"技能冷却中,剩余{冷却时间}秒")
🎮 嵌套结构 - 复杂战术
💡 游戏比喻
嵌套结构就像游戏中的复杂战术组合,可以在循环中嵌套条件判断,实现精细控制。
# 战斗系统模拟
敌人列表 = [ {"name": "小兵", "hp": 200, "defense": 10}, {"name": "精英", "hp": 500, "defense": 30}, {"name": "Boss", "hp": 1000, "defense": 50} ]
英雄攻击力 = 80
print("=== 开始战斗 ===")
for 敌人 in 敌人列表:
print(f"\n遭遇{敌人['name']}!")
攻击次数 = 0
while 敌人["hp"] > 0 and 攻击次数 < 10:
攻击次数 += 1
# 计算伤害(考虑防御)
实际伤害 = 英雄攻击力 - 敌人["defense"]
if 实际伤害 < 0:
实际伤害 = 1 # 最低伤害
敌人["hp"] -= 实际伤害
if 敌人["hp"] <= 0:
print(f"第{攻击次数}次攻击,击败{敌人['name']}!")
break
elif 敌人["hp"] < 敌人["hp"] * 0.3: # 血量低于30%
print(f"第{攻击次数}次攻击,{敌人['name']}血量危险!")
else:
print(f"第{攻击次数}次攻击,{敌人['name']}剩余血量:{敌人['hp']}")
print("\n=== 战斗结束 ===")
敌人列表 = [ {"name": "小兵", "hp": 200, "defense": 10}, {"name": "精英", "hp": 500, "defense": 30}, {"name": "Boss", "hp": 1000, "defense": 50} ]
英雄攻击力 = 80
print("=== 开始战斗 ===")
for 敌人 in 敌人列表:
print(f"\n遭遇{敌人['name']}!")
攻击次数 = 0
while 敌人["hp"] > 0 and 攻击次数 < 10:
攻击次数 += 1
# 计算伤害(考虑防御)
实际伤害 = 英雄攻击力 - 敌人["defense"]
if 实际伤害 < 0:
实际伤害 = 1 # 最低伤害
敌人["hp"] -= 实际伤害
if 敌人["hp"] <= 0:
print(f"第{攻击次数}次攻击,击败{敌人['name']}!")
break
elif 敌人["hp"] < 敌人["hp"] * 0.3: # 血量低于30%
print(f"第{攻击次数}次攻击,{敌人['name']}血量危险!")
else:
print(f"第{攻击次数}次攻击,{敌人['name']}剩余血量:{敌人['hp']}")
print("\n=== 战斗结束 ===")
🎯 实战练习
💪 挑战任务
创建一个完整的战斗系统,包含多种敌人类型和复杂的战斗逻辑。
# 完整战斗模拟系统
# 1. 定义战斗参数
英雄 = { "name": "赵云", "hp": 800, "attack": 120, "defense": 40, "skills": ["龙胆", "破云", "天翔"] }
# 2. 战斗主循环
回合数 = 1
while 英雄["hp"] > 0 and 回合数 <= 5:
print(f"\n=== 第{回合数}回合 ===")
# 3. 选择战术
if 英雄["hp"] > 500:
战术 = "进攻"
伤害加成 = 1.2
elif 英雄["hp"] > 200:
战术 = "防守"
伤害加成 = 0.8
else:
战术 = "撤退"
伤害加成 = 0.5
# 4. 执行攻击
for i in range(3): # 每次回合攻击3次
本次伤害 = 英雄["attack"] * 伤害加成
print(f"{战术}姿态,造成{本次伤害:.1f}点伤害")
# 5. 受到伤害
受到伤害 = 50 + 回合数 * 10
实际伤害 = 受到伤害 - 英雄["defense"]
if 实际伤害 < 10:
实际伤害 = 10
英雄["hp"] -= 实际伤害
print(f"受到{实际伤害}点伤害,剩余血量:{英雄['hp']}")
回合数 += 1
# 6. 战斗结果
if 英雄["hp"] > 0:
print("\n🎉 战斗胜利!")
else:
print("\n💀 战斗失败...")
# 1. 定义战斗参数
英雄 = { "name": "赵云", "hp": 800, "attack": 120, "defense": 40, "skills": ["龙胆", "破云", "天翔"] }
# 2. 战斗主循环
回合数 = 1
while 英雄["hp"] > 0 and 回合数 <= 5:
print(f"\n=== 第{回合数}回合 ===")
# 3. 选择战术
if 英雄["hp"] > 500:
战术 = "进攻"
伤害加成 = 1.2
elif 英雄["hp"] > 200:
战术 = "防守"
伤害加成 = 0.8
else:
战术 = "撤退"
伤害加成 = 0.5
# 4. 执行攻击
for i in range(3): # 每次回合攻击3次
本次伤害 = 英雄["attack"] * 伤害加成
print(f"{战术}姿态,造成{本次伤害:.1f}点伤害")
# 5. 受到伤害
受到伤害 = 50 + 回合数 * 10
实际伤害 = 受到伤害 - 英雄["defense"]
if 实际伤害 < 10:
实际伤害 = 10
英雄["hp"] -= 实际伤害
print(f"受到{实际伤害}点伤害,剩余血量:{英雄['hp']}")
回合数 += 1
# 6. 战斗结果
if 英雄["hp"] > 0:
print("\n🎉 战斗胜利!")
else:
print("\n💀 战斗失败...")