✧ Цикл for и функция range ✧

🔄 Теория: Цикл for в Python

Цикл for как прокачка полного сета артефактов - переходя от предмета к предмету выполняем с ними одни и те же действия (повышаем уровень), пока не соберем идеальный сет!.

Вот так:


# Набор артефактов для прокачки
artifacts = ["Цветок", "Перо", "Часы", "Кубок", "Корона"]

# Прокачиваем каждый артефакт
for artifact in artifacts:
    print(f"Улучшаем {artifact}:")
    print(f"  {artifact} +1")
    # Поднимаем уровень артефакта до максимума
    for level in range(0, 21, 4):
        print(f"  {artifact} +{level}")
                
Задавать, что именно мы перебираем можно разными способами.

Базовый цикл с range:

# range(stop)
for i in range(4):  # 0, 1, 2, 3
    print(f"Выполнена комиссия {i + 1}")

# range(start, stop)
for level in range(80, 91):  # 80 до 90
    print(f"Повышение уровня до {level}")

# range(start, stop, step)
for value in range(0, 101, 25):  # 0, 25, 50, 75, 100
    print(f"Прогресс прокачки: {value}%")

Цикл по коллекциям:

# По списку
characters = ["Венти", "Чжун Ли", "Райдэн"]
for archon in characters:
    print(f"{archon} - Архонт")

# По строке
name = "Кокоми"
for char in name:
    print(char.upper())

# enumerate() для получения индексов
for index, char in enumerate(characters):
    print(f"{index + 1}: {char}")

Обход словарей:

# Характеристики персонажа
stats = {
    "HP": 15000,
    "ATK": 2100,
    "DEF": 850,
    "Крит.шанс": 62.3
}

# Обход ключей и значений
for stat, value in stats.items():
    print(f"{stat}: {value}")

# Только ключи
for stat in stats.keys():
    print(f"Есть стат {stat}")

# Только значения
for value in stats.values():
    print(f"Значение: {value}")

🎯 Задача: Подсчёт материалов для возвышения

Создайте систему для расчёта необходимых материалов для прокачки Сян Лин с 60 до 90 уровня.

Требования для каждого возвышения:

# Словарь с требованиями
requirements = {
    "60-70": {
        "mora": 100000,
        "fire_seeds": 3,
        "scrolls": 12,
        "slimes": 18
    },
    "70-80": {
        "mora": 120000,
        "fire_seeds": 6,
        "scrolls": 24,
        "slimes": 24
    },
    "80-90": {
        "mora": 160000,
        "fire_seeds": 9,
        "scrolls": 36,
        "slimes": 36
    }
}

Программа должна:

💡 Подсказка:

# Подсчёт суммы для каждого материала
totals = {
    "mora": 0,
    "fire_seeds": 0,
    "scrolls": 0,
    "slimes": 0
}

for phase in requirements.values():
    for material, amount in phase.items():
        totals[material] += amount

# Расчёт опыта для уровней
exp_per_level = 20000
total_exp = sum(exp_per_level for _ in range(60, 90))
⟵ Оператор match-case Цикл while ⟶