У цьому записі буде розглянуто використання оператора 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')