Перебор списка: цикл по всем предметам

Учим цикл шагать по списку и обрабатывать каждый предмет: перекличка игроков и подсчёт очков команды.

Перебор списка — это когда цикл по очереди берёт каждый элемент списка и что-то с ним делает.

Цикл идёт по рюкзаку

Список — это здорово, но самое полезное — уметь пройтись по всем предметам и с каждым что-то сделать. Например, назвать каждого зверя в зоопарке. Для этого цикл for умеет шагать прямо по списку — берёт предметы один за другим:

animals = ["кот", "собака", "попугай"]
for animal in animals:
    print("В зоопарке живёт:", animal)

Вывод:

В зоопарке живёт: кот
В зоопарке живёт: собака
В зоопарке живёт: попугай

Прочитаем строчку for animal in animals: по-русски: «для каждого animal в списке animals». На первом круге animal станет «кот», на втором — «собака», на третьем — «попугай». Цикл сам прошёл весь список, и нам не пришлось знать заранее, сколько в нём зверей. Это называется перебор списка.

Удобное имя для каждого предмета

Заметь: animals (с буквой s на конце) — это весь список, а animal (без s) — один текущий предмет. Так часто делают: список зовут во множественном числе, а предмет — в единственном. Это не обязательно, но помогает не запутаться: «для каждого animal из animals».

Считаем очки всей команды

Соединим перебор списка с копилкой суммы из прошлого раздела. У нас оценки за контрольную, и мы хотим узнать общую сумму очков:

scores = [5, 4, 5, 3, 5]
total = 0
for s in scores:
    total = total + s
print("Сумма очков:", total)

Вывод:

Сумма очков: 22

Цикл берёт оценки по очереди (5, потом 4, потом 5...) и каждую прибавляет в копилку total. В конце там лежит сумма всех оценок — 22. Так считают общий счёт команды, сумму покупок, очки за все уровни.

Как это в Scratch

В Scratch есть блок «для каждого предмета в списке» — он делает ровно то же самое: по очереди достаёт элементы списка. Та же идея «пройтись по всем», которую ты уже понял.

для каждого [зверь] в [животные]
    сказать зверь

Попробуй сам

У нас список дел на день. Пусть программа напомнит про каждое. Запусти, потом допиши своё дело в список.

dela = ["сделать уроки", "погулять", "почитать книгу"]
for delo in dela:
    print("Не забудь:", delo)

Вывод:

Не забудь: сделать уроки
Не забудь: погулять
Не забудь: почитать книгу

Частые ошибки

  • Путать список и предмет. В for animal in animals список — это animals, а один зверь — animal. Печатать внутри цикла надо предмет (animal), а не весь список.
  • Создавать копилку внутри цикла. Как и со счётчиком: total = 0 пиши до цикла, иначе сумма будет каждый раз обнуляться.

Что мы узнали

  • Перебор списка — цикл for ... in список по очереди берёт каждый предмет.
  • Не нужно знать заранее длину списка — цикл сам пройдёт все элементы.
  • Перебор + копилка = подсчёт суммы по всему списку.
Проверьте себя
1. Что делает цикл for animal in animals?
AБерёт по очереди каждый предмет списка animals
BПечатает только первый предмет
CУдаляет список
DПовторяется бесконечно
2. Зачем список часто называют во множественном числе (animals), а предмет — в единственном (animal)?
AТак требует Python
BЧтобы не путать весь список и один текущий предмет
CДля скорости
DЭто ошибка
3. Чему будет равна сумма очков для списка [5, 4, 5, 3, 5]?
A5
B22
C20
D25

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.

Поддержать проект