🎯 函数技能教程

就像在王者荣耀中掌握各种英雄技能,这里我们将学习Python函数的定义和使用!

⚡ 函数基础 - 技能定义

💡 游戏比喻

函数就像英雄的技能,可以重复使用,每个技能都有特定的效果和冷却时间。

📝 函数定义语法
def 函数名(参数1, 参数2, ...):
    # 函数体 - 执行具体操作
    return 返回值 # 可选

🎯 无参数函数

# 定义基础攻击技能
def 基础攻击():
    print("发动基础攻击!")
    return 50 # 返回伤害值

# 使用技能
伤害 = 基础攻击()
print(f"造成{伤害}点伤害")

🎯 带参数函数

# 定义技能伤害计算
def 计算技能伤害(基础伤害, 暴击倍数, 防御减免):
    最终伤害 = 基础伤害 * 暴击倍数 * (1 - 防御减免)
    return 最终伤害

# 使用不同参数调用
伤害1 = 计算技能伤害(100, 1.5, 0.2)
伤害2 = 计算技能伤害(200, 2.0, 0.3)
print(f"技能1伤害:{伤害1:.1f}")
print(f"技能2伤害:{伤害2:.1f}")

🎮 参数类型 - 技能配置

💡 游戏比喻

就像技能可以有不同的配置方式(默认配置、可选配置),函数参数也有多种类型。

🔧 默认参数

# 定义英雄技能,带有默认参数
def 释放技能(技能名称, 伤害=100, 冷却时间=5):
    print(f"释放{技能名称}!")
    print(f"造成{伤害}点伤害,冷却{冷却时间}秒")
    return 伤害

# 使用默认参数
释放技能("火球术")
# 自定义参数
释放技能("冰风暴", 伤害=150, 冷却时间=8)

🔧 关键字参数

# 定义装备强化函数
def 强化装备(装备名称, **强化属性):
    print(f"强化装备:{装备名称}")
    for 属性, 数值 in 强化属性.items():
        print(f" {属性} +{数值}")

# 使用关键字参数
强化装备("无尽战刃", 攻击力=80, 暴击率=0.2)
强化装备("守护者之铠", 防御力=60, 生命值=300, 移速=5)
# 可变参数示例
def 组合技能(*技能列表):
    print("发动组合技能:")
    for i, 技能 in enumerate(技能列表, 1):
        print(f" 第{i}招:{技能}")
    return len(技能列表) * 50 # 总伤害

# 可以传入任意数量的参数
总伤害 = 组合技能("突进", "斩击", "回旋")
print(f"组合技能总伤害:{总伤害}")

🔄 返回值 - 技能效果

💡 游戏比喻

函数的返回值就像技能的效果反馈,告诉我们技能造成了多少伤害、是否命中目标等。

🎯 单返回值

# 计算战斗伤害
def 计算战斗伤害(攻击力, 防御力, 技能倍率):
基础伤害 = 攻击力 * 技能倍率
实际伤害 = 基础伤害 - 防御力
if 实际伤害 < 0:
实际伤害 = 1 # 最低伤害
return 实际伤害

伤害 = 计算战斗伤害(100, 30, 1.5)
print(f"战斗伤害:{伤害}")

🎯 多返回值

# 执行复杂技能
def 执行连招(攻击力, 连招次数):
总伤害 = 0
暴击次数 = 0
for i in range(连招次数):
本次伤害 = 攻击力 * (1 + i * 0.1) # 连招伤害递增
总伤害 += 本次伤害
# 20%概率暴击
if i % 5 == 0: # 简化模拟暴击
暴击次数 += 1
return 总伤害, 暴击次数

总伤害, 暴击次数 = 执行连招(80, 10)
print(f"连招总伤害:{总伤害:.1f}")
print(f"暴击次数:{暴击次数}")

🏆 高级函数特性

💡 游戏比喻

高级函数特性就像英雄的终极技能,具有更强大的功能和更复杂的机制。

🔗 嵌套函数

# 战斗系统
def 战斗系统(英雄名称, 敌人名称):
# 内部函数 - 计算伤害
def 计算伤害(攻击力, 防御力):
return 攻击力 - 防御力
# 内部函数 - 显示战斗信息
def 显示信息(攻击者, 目标, 伤害):
print(f"{攻击者}对{目标}造成{伤害}点伤害")
# 执行战斗
伤害 = 计算伤害(100, 30)
显示信息(英雄名称, 敌人名称, 伤害)
return 伤害

战斗系统("赵云", "张飞")

🔗 匿名函数

# 使用lambda创建简单技能
# 定义简单技能效果
治疗技能 = lambda 当前血量, 治疗量: 当前血量 + 治疗量
伤害技能 = lambda 攻击力, 倍率: 攻击力 * 倍率
# 使用技能
新血量 = 治疗技能(500, 150)
伤害值 = 伤害技能(80, 1.8)
print(f"治疗后血量:{新血量}")
print(f"技能伤害:{伤害值}")

🎮 实战练习 - 完整技能系统

💪 挑战任务

创建一个完整的英雄技能系统,包含多种技能类型和复杂的战斗逻辑。

# 完整的英雄技能系统
# 1. 定义基础技能函数
def 创建技能(技能名称, 基础伤害, 冷却时间, 技能类型="攻击"):
"""创建英雄技能"""
def 释放技能(攻击力, 暴击率=0.1):
# 计算实际伤害
实际伤害 = 基础伤害 + 攻击力 * 0.5
# 暴击判断
import random
if random.random() < 暴击率:
实际伤害 *= 2
print(f"💥 {技能名称}暴击!")
print(f"🎯 释放{技能名称},造成{实际伤害:.1f}点伤害")
print(f"⏰ 冷却时间:{冷却时间}秒")
return 实际伤害
return 释放技能
# 2. 创建具体技能
火球术 = 创建技能("火球术", 80, 3)
冰风暴 = 创建技能("冰风暴", 120, 6)
雷电链 = 创建技能("雷电链", 150, 8)
# 3. 使用技能系统
print("=== 英雄技能演示 ===")
攻击力 = 100
总伤害 = 0
# 释放技能
总伤害 += 火球术(攻击力, 暴击率=0.2)
总伤害 += 冰风暴(攻击力)
总伤害 += 雷电链(攻击力, 暴击率=0.15)
print(f"\n📊 总伤害输出:{总伤害:.1f}")
# 4. 技能组合函数
def 技能连招(*技能列表, 攻击力):
print("\n🔥 发动技能连招!")
连招伤害 = 0
for 技能 in 技能列表:
连招伤害 += 技能(攻击力)
return 连招伤害
# 使用连招
连招伤害 = 技能连招(火球术, 冰风暴, 攻击力=攻击力)
print(f"💪 连招总伤害:{连招伤害:.1f}")