Вложенные циклы
Внутри цикла может находиться другой цикл. Это называется вложенным циклом. На каждой итерации внешнего цикла внутренний цикл проходит целиком. Давайте перечислим все футболки, которые продаёт магазин, во всех размерах и всех цветах:
sizes = ["S", "M"]
colors = ["красный", "синий", "белый"]
for size in sizes:
for color in colors:
print(size, color)Вывод:
S красный
S синий
S белый
M красный
M синий
M белыйВнешний цикл берёт "S", а внутренний проходит по всем трём цветам. Только после этого внешний цикл берёт "M", и внутренний снова проходит по всем цветам. Внутренний блок выполняется 2 × 3 = 6 раз. Внутренний цикл записан с отступом внутри внешнего, а его собственный блок — с ещё одним отступом. Дайте переменным двух циклов разные имена (здесь size и color), чтобы было понятно, где какая.
Вложенные циклы удобны и для вывода таблиц. До сих пор каждый print() заканчивал строку. С end=" " он заканчивается пробелом, а следующий print() продолжает ту же строку. Пустой print() затем завершает строку. Этот код выводит часть таблицы умножения, по одной строке для каждого числа:
for row in range(1, 4):
for column in range(1, 6):
print(row * column, end=" ")
print()1 2 3 4 5
2 4 6 8 10
3 6 9 12 15 Посмотрите, где стоит пустой print(): у него только один отступ, поэтому он принадлежит внешнему циклу. Он выполняется каждый раз, когда внутренний цикл вывел целую строку.
Задание
- 1
Турагентство предлагает поездку в каждый город из
citiesс каждым занятием изactivities. Напишите цикл поcitiesи вложенный в него цикл поactivitiesи выведите каждую пару с помощьюprint(city, activity). Вывод начинается так:Прага Теннис,Прага Шопинг,Прага Экскурсии,Париж Теннис… - 2
Ниже выведите небольшую таблицу умножения от 1 до 5: пять строк по пять чисел, разделённых пробелами. Первая строка —
1 2 3 4 5, вторая —2 4 6 8 10, последняя —5 10 15 20 25. Используйте два вложенных цикла сrange(),print(..., end=" ")и пустойprint().