Повторення (цикл) — це алгоритмічна структура, за допомогою якої та сама послідовність дій виконується кілька разів.
Існують два основні різновиди циклів:
- цикли, що повторюються певне число раз;
- цикли, що повторюються, поки виконується умова.
Синтаксис циклу for
Цикл for(із параметром) повторює блок команд (тіло циклу) задану кількість разів.
Зверни увагу!
Цикл for зручно використовувати, якщо відома кількість повторень.
Синтаксис, або правила запису циклу for, має такий вигляд:
Як можна задавати діапазон значень лічильника циклу?
Послідовність значень можна задати в такі способи:
І. З використанням вбудованої функції range (start, stop, step):
І. З використанням вбудованої функції range (start, stop, step):
for х in range(start, stop, step):
<тіло циклу>
<тіло циклу>
де х — параметр (або лічильник) циклу;
in — ключове слово, що наказує Python почергово надати змінній x усі значення в діапазоні від start до stop–1 із кроком step;
range(n) — функція, що визначає, скільки разів буде повторено виконання операторів тіла циклу.
Зверни увагу!
Якщо start = 0 або step = 1, ці параметри можна не вказувати. Якщо потрібно вести відлік у зворотному порядку, step має бути від’ємним.
Приклад:
Функція range(4) задає список значень [0, 1, 2, 3]:
for x in range(4):
print (x)
for x in range(4):
print (x)
Оператор for надрукує числа від 20 до 24.
fоr i in range(20, 25) :
print(i)
Оператор for надрукує парні числа в діапазоні від 10 до 20 включно.
fоr i in range(10, 21) :
print(i)
Приклад:
Оператор for надрукує числа від 5 до 1.
fоr i in range(5, 0, –1) :
print(i)
Приклад:
Оператор for надрукує числа зі списку значень [2, 9, 5, 8, 11].
b = [2, 9, 5, 8, 11]
for x in b :
for x in b :
print(х)
Приклади розв'язування задач
У тіло циклу можуть бути вкладені умовні оператори або інші оператори циклу.
Приклад:
Знайти всі дільники натурального числа k. Число 1 і саме число k не включати до переліку дільників. Алгоритм розв’язування задачі: перебрати всі значення числа і від 2 до k // 2 ; якщо і є дільником числа k (k % і == 0), вивести значення і.
k=int(input('k=?'))
for i in range(2, k //2+1):
if k % i ==0:
print (i,' ', end='')
k=int(input('k=?'))
for i in range(2, k //2+1):
if k % i ==0:
print (i,' ', end='')
Приклад:
Досконалими давні греки називали числа, які дорівнюють сумі всіх своїх дільників, окрім самого числа (6=1+2+3). Знайти досконалі числа в діапазоні від m до n. Алгоритм розв’язування задачі: для кожного числа k від m до n знайти суму дільників від 1 до k // 2 ; якщо сума дільників дорівнює числу k, вивести значення k.
m=int(input('m=?')) # вводиться 2 цілих числа — значення m, n (m<n)
n=int(input('n=?'))
for k in range(m, n+1): # перебираються всі числа k від m до n
sum=0
for i in range(1, k//2+1): ): # перебираються всі числа і від 1 до k // 2
if k % i ==0: # якщо і є дільником числа k, додати число і до суми
sum=sum+i
if sum==k: print (k) # виводяться числа, що задовольняють умові задачі.
m=int(input('m=?')) # вводиться 2 цілих числа — значення m, n (m<n)
n=int(input('n=?'))
for k in range(m, n+1): # перебираються всі числа k від m до n
sum=0
for i in range(1, k//2+1): ): # перебираються всі числа і від 1 до k // 2
if k % i ==0: # якщо і є дільником числа k, додати число і до суми
sum=sum+i
if sum==k: print (k) # виводяться числа, що задовольняють умові задачі.
Приклад:
За допомогою методу перебору знайти розв’язок системи рівнянь
Значення x не мoже бути більшим за 7, т.к., якщо у=0, то 23//3 =7. Значення у не мoже бути більшим за 6, т.к., якщо х=0, то 20//3 =6. У зовнішньомуциклі переберемо значення х здіапазону [0; 8). Для кожного х у внітрішньому циклі переберемо значення у з діапазону [0; 87). Для кожного сполучення значень потрібно перевіряти виконання умови (2*x-3*y==8) and (3*x+y==23).
for x in range(8):
for y in range(3):
if (2*x-3*y==8) and (3*x+y==23):
print ('x=',x, ' y=',y)
Джерела:
Інформатика : підруч. для 7 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2020. — с. : іл.