Перейти до змісту

Керування потоком виконання циклів

Деколи виникає потреба змінити звичний хід виконання цикла. Для цього у циклах (як 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))