У цьому записі буде розглянуто використання оператора else з циклами Python: for та while.

Докладніше про цикл while за посиланням: Цикл while у Python

Оператор else після циклу for

Цикл for у Python використовується для перебору елементів об’єктів котрі піддаються ітерації (Що таке ітератори в Python), таких як списки, кортежі, рядки, тощо.

Оператор else дозволяє вказати блок коду, який виконується один раз, одразу після завершення циклу for за певних умов:

  • Блок else виконується коли цикл for завершує всі ітерації, без переривання оператором break.
  • Якщо цикл for завершується передчасно через оператор break, блок else ігнорується.

Приклад:

def loop(max_number):
    numbers = [1, 2, 3, 4, 5]

    for number in numbers:
        print(number, end='')
        if number == max_number:
            print(': Break loop')
            break
    else:
        print(': Loop completed')


loop(10)  # 12345: Loop completed
loop(3)  # 123: Break loop

Оператор else після циклу while

У Python цикл while є конструкцією, котра використовується для повторного виконання блоку коду, доки виконується певна умова.

Подібно до циклу for, цикл while також підтримує оператор else, що забезпечує додаткову функціональність після завершення циклу за певних умов:

  • Блок else виконується коли умова циклу while стає хибною, тобто цикл завершується звичайним чином.
  • Якщо цикл while завершується передчасно через оператор break, блок else ігнорується.

Приклад:

def loop(max_number):
    count = 0

    while count < 5:
        print(count, end='')
        if count == max_number:
            print(': Break loop')
            break
        count += 1
    else:
        print(': Loop completed')


loop(10)  # 12345: Loop completed
loop(3)  # 123: Break loop

Приклад використання

Використання else може бути корисним коли в циклі є оператор break, і є потреба знати, чи переходило до нього управління.

Для прикладу уявімо, що є комп’ютер та список людей, і нам потрібно щоб кожен з них скористався цим комп’ютером (до тих пір, поки один з них його не зламає). В кінці циклу ми хочемо знати, чи було зламано наш комп’ютер. Звичайно можна реалізувати це наступним чином:

broken = False

for person in persons:
    person.use(computer)
    if computer.is_broken:
        broken = True
        break

if not broken:
    print('Computer is working')

Використовуючи for..else, можна привести цей код до більш компактної форми:

for person in persons: 
    person.use(computer) 
    if computer.is_broken: 
        break 
else: 
    print('Computer is working')