✧ Функции в Python ✧

⚔️ Теория: Функции

Функции как способности персонажей: у каждой своё предназначение, и их можно комбинировать для достижения нужного результата!
Они позволяют организовать код, выделяя в нем повторно используемые блоки. Функции могут принимать параметры для работы и возвращать результаты своего выполнения.

Создание функций:

# Простая функция без параметров
def cast_elemental_burst():
    print("Взрыв стихии!")
    return "Анемо урон"

# Функция с параметрами
def calculate_damage(base_atk: float, talent_multiplier: float) -> float:
    """
    Рассчитывает урон от атаки.
    
    Args:
        base_atk: Базовая атака персонажа
        talent_multiplier: Множитель таланта в процентах
    
    Returns:
        float: Итоговый урон
    """
    return base_atk * (talent_multiplier / 100)

Возвращение значений:

# Возврат одного значения
def check_crit(crit_rate: float) -> bool:
    return random() < (crit_rate / 100)

# Возврат нескольких значений
def get_talent_stats(level: int) -> tuple:
    base_dmg = 150 + (level * 10)
    cooldown = max(15 - level, 8)
    energy_cost = 60
    return base_dmg, cooldown, energy_cost

# Распаковка возвращаемых значений
damage, cd, energy = get_talent_stats(8)
print(f"Урон: {damage}, перезарядка: {cd}с")

Раннее возвращение:

# Проверка возможности применения навыка
def try_use_skill(energy: float, cooldown: float) -> bool:
    if cooldown > 0:
        print("Навык на перезарядке!")
        return False
        
    if energy < 60:
        print("Недостаточно энергии!")
        return False
    
    print("Применяем навык!")
    return True

🎯 Задача: Система расчёта урона

Создайте систему для расчёта урона от обычной атаки Ху Тао.

Формула для расчёта:

# Базовый урон = (Базовая_АТК + Бонус_АТК) * Множитель_Таланта%
# Крит урон = Базовый_урон * (1 + Крит_УРОН%)
# Финальный урон = (Крит)Урон * (1 + Бонусы%) * (1 - Сопротивление%)

Реализуйте функции для:

💡 Подсказка:

def calculate_hutao_damage(
    base_atk: float,
    bonus_atk: float,
    talent_level: int,
    crit_rate: float,
    crit_dmg: float,
    pyro_bonus: float,
    enemy_res: float
) -> dict:
    """
    Рассчитывает урон от обычной атаки Ху Тао
    Возвращает словарь с обычным и критическим уроном
    """
    # Множители таланта обычной атаки по уровням
    talent_multipliers = {
        1: 46.9,
        2: 50.7,
        # ...
        10: 81.8
    }
⟵ Комбинирование циклов Параметры функций ⟶