В этом уроке мы разберем одну из самых полезных встроенных функций Python — `enumerate()`. Часто в циклах нам нужен не только сам элемент списка, но и его порядковый номер (индекс). Раньше для этого приходилось создавать счетчик вручную или использовать громоздкую конструкцию с `range(len())`. Функция `enumerate()` делает этот процесс гораздо проще и изящнее, позволяя получать и индекс, и значение на каждой итерации цикла. В этих заданиях вы научитесь основам ее использования, познакомитесь с дополнительными параметрами и увидите, почему этот подход считается более пайтоничным.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Основы синтаксиса enumerate
Заполните пропуски в коде, чтобы правильно перебрать список `fruits` с помощью функции `enumerate()`. Цикл должен выводить индекс и название фрукта на каждой итерации.
fruits = ['яблоко', 'банан', 'вишня']
for input1S, input2S in input3S(fruits):
print(f"Индекс: {index}, Фрукт: {fruit}")Предскажите результат работы цикла
Проанализируйте данный код. Что именно будет выведено на экран в результате его выполнения? Учтите, что индексация в `enumerate` по умолчанию начинается с нуля.
letters = ['a', 'b', 'c']
for index, letter in enumerate(letters):
print(f"{index}-{letter}")Исправьте ошибку распаковки
В этом коде допущена распространенная ошибка. Функция `enumerate` возвращает кортеж (пару значений), но в цикле `for` указана только одна переменная. Из-за этого код не работает как ожидалось. Исправьте строку с объявлением цикла, чтобы переменные `index` и `spell` получали нужные значения.
spells = ['Огненный шар', 'Ледяная стрела']# Ожидаемый вывод: "0: Огненный шар", "1: Ледяная стрела"for spell in enumerate(spells): print(f"{index}: {spell}")Соберите "пайтоничный" цикл
Соберите из фрагментов работающий скрипт, который выводит планеты и их порядковые номера, начиная с 0. Используйте наиболее современный и рекомендуемый способ для этой задачи — `enumerate`. Некоторые фрагменты являются лишними и относятся к старому подходу.
for i, planet in enumerate(planets): print(f"Планета №{i}: {planet}")planets = ['Меркурий', 'Венера', 'Земля']for i in range(len(planets)): print(planets[i])Изменение начального индекса
По умолчанию `enumerate` начинает нумерацию с 0. Однако это можно изменить с помощью второго аргумента `start`. Заполните пропуски так, чтобы нумерация задач в списке началась с 1.
tasks = ['Написать код', 'Протестировать код', 'Загрузить на сервер']
# Нумерация должна начаться с 1
for num, task in input1S(tasks, input2S):
print(f"Задача {num}. {task}")Что выведет код c аргументом start?
Проанализируйте код. Переменной `first_index` присваивается первый индекс, сгенерированный циклом. Какое число будет выведено в итоге? Введите только одно число в поле ответа.
items = [50, 60, 70]
first_index = None
for i, val in enumerate(items, start=100):
first_index = i
break
print(first_index)Сравните подходы: enumerate vs range(len)
До появления `enumerate` для получения индекса и значения приходилось использовать конструкцию `for i in range(len(data)):`. Сопоставьте фрагменты кода с их описаниями, чтобы увидеть разницу между старым и новым подходом.
print(val)for i in range(len(data)):print(data[i])for i, val in enumerate(data):Соберите f-строку из банка
Используя токены из банка, соберите правильную f-строку для вывода. Цель — на каждой итерации выводить сообщение вида "Цвет blue находится по индексу 2". Перетащите нужные переменные в пропуски.
colors = ['red', 'green', 'blue']
for index, color in enumerate(colors):
print(f"Цвет {input1S} находится по индексу {input2S}")