Функция enumerate()

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В этом уроке мы разберем одну из самых полезных встроенных функций Python — `enumerate()`. Часто в циклах нам нужен не только сам элемент списка, но и его порядковый номер (индекс). Раньше для этого приходилось создавать счетчик вручную или использовать громоздкую конструкцию с `range(len())`. Функция `enumerate()` делает этот процесс гораздо проще и изящнее, позволяя получать и индекс, и значение на каждой итерации цикла. В этих заданиях вы научитесь основам ее использования, познакомитесь с дополнительными параметрами и увидите, почему этот подход считается более пайтоничным.

Список тем

Основы синтаксиса enumerate

id: 39989_task_enumerate_1

Заполните пропуски в коде, чтобы правильно перебрать список `fruits` с помощью функции `enumerate()`. Цикл должен выводить индекс и название фрукта на каждой итерации.

Заполните пропуски
fruits = ['яблоко', 'банан', 'вишня']
for input1S, input2S in input3S(fruits):
    print(f"Индекс: {index}, Фрукт: {fruit}")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Предскажите результат работы цикла

id: 39989_task_enumerate_2

Проанализируйте данный код. Что именно будет выведено на экран в результате его выполнения? Учтите, что индексация в `enumerate` по умолчанию начинается с нуля.

Выберите правильный вариант ответа
letters = ['a', 'b', 'c']
for index, letter in enumerate(letters):
    print(f"{index}-{letter}")
Сообщения
Проверить
Показать подсказку

Исправьте ошибку распаковки

id: 39989_task_enumerate_3

В этом коде допущена распространенная ошибка. Функция `enumerate` возвращает кортеж (пару значений), но в цикле `for` указана только одна переменная. Из-за этого код не работает как ожидалось. Исправьте строку с объявлением цикла, чтобы переменные `index` и `spell` получали нужные значения.

Найдите ошибку и исправьте
spells = ['Огненный шар', 'Ледяная стрела']
# Ожидаемый вывод: "0: Огненный шар", "1: Ледяная стрела"
for spell in enumerate(spells):
    print(f"{index}: {spell}")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите "пайтоничный" цикл

id: 39989_task_enumerate_4

Соберите из фрагментов работающий скрипт, который выводит планеты и их порядковые номера, начиная с 0. Используйте наиболее современный и рекомендуемый способ для этой задачи — `enumerate`. Некоторые фрагменты являются лишними и относятся к старому подходу.

Перетяните в правильном порядке строки из одного блока в другой
for i, planet in enumerate(planets):
    print(f"Планета №{i}: {planet}")
planets = ['Меркурий', 'Венера', 'Земля']
for i in range(len(planets)):
    print(planets[i])
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Изменение начального индекса

id: 39989_task_enumerate_5

По умолчанию `enumerate` начинает нумерацию с 0. Однако это можно изменить с помощью второго аргумента `start`. Заполните пропуски так, чтобы нумерация задач в списке началась с 1.

Заполните пропуски
tasks = ['Написать код', 'Протестировать код', 'Загрузить на сервер']
# Нумерация должна начаться с 1
for num, task in input1S(tasks, input2S):
    print(f"Задача {num}. {task}")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что выведет код c аргументом start?

id: 39989_task_enumerate_6

Проанализируйте код. Переменной `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)

id: 39989_task_enumerate_7

До появления `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-строку из банка

id: 39989_task_enumerate_8

Используя токены из банка, соберите правильную f-строку для вывода. Цель — на каждой итерации выводить сообщение вида "Цвет blue находится по индексу 2". Перетащите нужные переменные в пропуски.

Нужно правильно расставить в пропуски предложенные варианты
colors = ['red', 'green', 'blue']
for index, color in enumerate(colors):
    print(f"Цвет {input1S} находится по индексу {input2S}")
color
index
colors
'blue'
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру