Вкладені цикли
Вкладений цикл — цикл, який міститься в тілі іншого циклу.
Вкладений цикл також називають внутрішнім, а цикл, у якому він міститься, — зовнішнім (рис.1).
Рис.1
Усередину вкладеного циклу може бути вкладено наступний цикл і так далі. У мові Python підтримується до 20 рівнів вкладеності.
Принцип роботи вкладених циклів:
- Під час першої ітерації зовнішній цикл викликає внутрішній, який виконується до свого завершення, після чого керування повертається в тіло зовнішнього циклу.
- Під час другої ітерації зовнішній цикл знову викликає внутрішній. І так доти, поки не завершиться зовнішній цикл.
Приклад:
Обчислимо значення змінної при значеннях змінних n = 1, 2, 3 і k = 2, 4, 7, 9.
Якщо перебирати всі значення n і k, отримаємо 12 значень змінної y. Скласти програму можна так: для кожного значення n = 1, 2, 3 перебрати всі значення k зі списку [2, 4, 7, 9], тобто n використати як параметр зовнішнього циклу, k — як параметр внутрішнього циклу (рис. 2):
print('n k y')
for n in range(1, 4):
for k in [2, 4, 7, 9]:
y = 2*k+n
print(n, k, y)
Якщо перебирати всі значення n і k, отримаємо 12 значень змінної y. Скласти програму можна так: для кожного значення n = 1, 2, 3 перебрати всі значення k зі списку [2, 4, 7, 9], тобто n використати як параметр зовнішнього циклу, k — як параметр внутрішнього циклу (рис. 2):
print('n k y')
for n in range(1, 4):
for k in [2, 4, 7, 9]:
y = 2*k+n
print(n, k, y)
Рис.2
Приклад:
Книга коштує 240 грн. У покупця є купюри номіналами 20, 50 і 100 гривень. Складемо програму для визначення всіх можливих варіантів оплати.
Переберемо всі можливі сполучення числа купюр. Щоб набрати названу суму, потрібно не більше 12 20-гривневих купюр,
не більше 6 50-гривневих купюр, і не більше 2 купюр по 100 грн. Позначимо числа купюр указаного номіналу змінними a, b, c і переберемо у вкладених циклах значення a, b, c зі вказаних діапазонів. Відповіддю будуть такі значення a, b, c, за яких a*20+b*50+c*100 = 240.
Переберемо всі можливі сполучення числа купюр. Щоб набрати названу суму, потрібно не більше 12 20-гривневих купюр,
не більше 6 50-гривневих купюр, і не більше 2 купюр по 100 грн. Позначимо числа купюр указаного номіналу змінними a, b, c і переберемо у вкладених циклах значення a, b, c зі вказаних діапазонів. Відповіддю будуть такі значення a, b, c, за яких a*20+b*50+c*100 = 240.
for a in range(13): # Кількість 20-гривневих купюр
for b in range( 6): # Кількість 50-гривневих купюр
for c in range( 3): # Кількість 100-гривневих купюр
if a*20+b*50+c*100 == 240:
print("20 грн – ", a, ", 50 грн – ", b, ", 100 грн – ", c)
Результат виконання програми наведено на рис. 3.
Рис.3
Джерела:
Інформатика : підруч. для 7 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2023.