>>>> accusation = {'room': 'ballroom', 'weapon': 'lead pipe',
>··················'person': 'Col. Mustard'}
>>>> for card in accusation:··#··или for card in accusation.keys():
>…·····print(card)
>…
>room
>weapon
>person
Чтобы итерировать по значениям, а не по ключам, следует использовать функцию values():
>>>> for value in accusation.values():
>…·····print(value)
>…
>ballroom
>lead pipe
>Col. Mustard
Чтобы вернуть как ключ, так и значение кортежа, вы можете использовать функцию items():
>>>> for item in accusation.items():
>…·····print(item)
>…
>('room', 'ballroom')
>('weapon', 'lead pipe')
>('person', 'Col. Mustard')
Помните, что можете присвоить значение кортежу за один шаг. Для каждого кортежа, возвращенного функцией items(), присвойте первое значение (ключ) переменной card, а второе (значение) — переменной contents:
>>>> for card, contents in accusation.items():
>…·····print('Card', card, 'has the contents', contents)
>…
>Card weapon has the contents lead pipe
>Card person has the contents Col. Mustard
>Card room has the contents ballroom
Проверяем, завершился ли цикл заранее, с помощью else
Как и в цикле while, в for имеется опциональный блок else, который проверяет, выполнился ли цикл for полностью. Если ключевое слово break не было вызвано, будет выполнен блок else.
Это полезно, если вам нужно убедиться в том, что предыдущий цикл выполнился полностью, вместо того чтобы рано прерваться. Цикл for в следующем примере выводит на экран название сыра и прерывается, если сыра в магазине не найдется:
>>>> cheeses = []
>>>> for cheese in cheeses:
>…·····print('This shop has some lovely', cheese)
>…·····break
>… else:··# отсутствие прерывания означает, что сыра нет
>…·····print('This is not much of a cheese shop, is it?')
>…
>This is not much of a cheese shop, is it?
Как и в цикле while, в цикле for использование блока else может показаться нелогичным. Можно рассматривать цикл for как поиск чего-то, в таком случае else будет вызываться, если вы ничего не нашли. Чтобы получить тот же эффект без блока else, используйте переменную, которая будет показывать, нашелся ли искомый элемент в цикле for, как здесь:
>>>> cheeses = []
>>>> found_one = False
>>>> for cheese in cheeses:
>…·····found_one = True
>…·····print('This shop has some lovely', cheese)
>…·····break
>…
>>>> if not found_one: