Керування потоком виконання циклів
Деколи виникає потреба змінити звичний хід виконання цикла.
Для цього у циклах (як while
так і for
) використовують спеціальні інструкції.
continue
Коли у циклі зустрічається інструкція continue
,
то виконання усіх інструкцій тіла циклу які йдуть за цим словом припиняється,
і починається наступний прохід циклу.
Розглянемо на прикладі: є список чисел, треба вивести усі числа з цього списку які лежать у діапазоні від 50 до 100.
numbers = [33, 57, 81, 976, 65, 710, 82, 98, 774, 6]
for number in numbers:
if number < 50 or number > 100:
continue
print(number)
break
Інструкція break перериває виконання циклу. Керування переходить до наступної після тіла цикла інструкцї.
Приклад: у списку чисел знайти індекс елемента зі значенням 7:
numbers = [33, 57, 81, 976, 65, 710, 82, 98, 7, 66]
index = 0
while index < len(numbers):
if numbers[index] == 7:
break
index = index + 1
print('Індекс елемента зі значенням 7:', index)
else
Блок інструкцій після else
буде виконано лише у тому випадку,
якщо вихід з циклу відбувся "природнім шляхом",
тобто не був перерваний інструкцією break
.
Приклад: у списку чисел знайти індекс елемента зі значенням 7 і присвоїти його змінній index. Якщо це число не знайдено у списку, тоді змінній index присвоїти значення -1.
numbers = list(range(10, 100))
for index in range(len(numbers)):
if numbers[index] == 7:
break
else:
index = -1
print('Індекс елемента зі значенням 7:', index)
Вважається що використання while-else
та for-else
заплутує логіку виконання програми.
Вищенаведений код ми можемо реалізувати як функцію:
def find_seven(numbers):
for i in range(len(numbers)):
if numbers[i] == 7:
return i
return -1
numbers = list(range(10, 100))
print('Індекс елемента зі значенням 7:', find_seven(numbers))