okpython.net
Все для начинающих

Как в Питоне создать бесконечный цикл?

Бесконечный цикл в Python – это конструкция, которая позволяет программе выполнять повторяющиеся действия неограниченно долго до тех пор, пока не возникнет критическая ошибка или же не будет использована инструкция break для выхода из него.

Бесконечные циклы могут быть использованы для различных задач, например, для мониторинга текущего состояния программы, изменений в файлах и данных в реальном времени, обработки событий в играх и приложениях, в ходе ожидания ответа сервера или ввода пользователя, а также некоторых других задачах.

Создается бесконечный цикл с помощью конструкции «while True:». В таком цикле условие всегда истинно, а значит он будет выполняться непрерывно до тех пор, пока не будет использована инструкция break или же на его работу не повлияет возбуждение некоторого исключения (см. пример №1).

Код Результат pythonCodes
# Бесконечный цикл с прерыванием через if.    
while True:
    # Здесь выполняется какой-то код.
    print('Внутри цикла!..')

    # Прерываем цикл по желанию пользователя.    
    if input('Продолжить (y/n)? ') == 'n': break

print()

# Заведем счетчик.
k = 3
# Бесконечный цикл с обработкой исключений.    
while True:
    try:
        # Здесь выполняется какой-то код.
        k -= 1
        print(f'5/{k} = {5/k}')
    # Если возникло исключение.
    except Exception:
        k = 3              
        # Прерываем цикл по желанию пользователя.    
        if input('Ошибка! Продолжить (y/n)? ') == 'n': 
            break    

print()

# Заведем счетчик.
k = 3
# Цикл прервется из-за необработанной ошибки.    
while True:
    # При k равном 0 получим исключение.
    k -= 1
    print(f'5/{k} = {5/k}')

    # Это условие никогда не выполнится.    
    if k < -1: break      
Внутри цикла!..
Продолжить (y/n)? y
Внутри цикла!..
Продолжить (y/n)? n

5/2 = 2.5
5/1 = 5.0
Ошибка! Продолжить (y/n)? y
5/2 = 2.5
5/1 = 5.0
Ошибка! Продолжить (y/n)? n

5/2 = 2.5
5/1 = 5.0
division by zero





















 

Пример №1. Создание бесконечного цикла (часть 1).

Стоит заметить, что для организации бесконечных циклов зачастую удобнее использовать конструкцию вида «while flag:», где флагу flag на начальном этапе присваивается значение True, а в нужный момент, когда цикл требуется прервать, значение флага меняется на False. В таком случае можно обойтись и без инструкции выхода из цикла break (см. пример №2).

Код Результат pythonCodes
# Стартовое значение флага.
flag = True
# Бесконечный цикл с прерыванием через if.    
while flag:
    # Здесь выполняется какой-то код.
    print('Внутри цикла!..')

    # Прерываем цикл по желанию пользователя.    
    if input('Продолжить (y/n)? ') == 'n': 
        flag = False

print()

flag = True
# Заведем счетчик.
k = 3
# Бесконечный цикл с обработкой исключений.    
while flag:
    try:
        # Здесь выполняется какой-то код.
        k -= 1
        print(f'5/{k} = {5/k}')
    # Если возникло исключение.
    except Exception:
        k = 3              
        # Прерываем цикл по желанию пользователя.    
        if input('Ошибка! Продолжить (y/n)? ') == 'n': 
            flag = False       

print()

flag = True
# Заведем счетчик.
k = 3
# Цикл прервется из-за необработанной ошибки.    
while flag:
    # При k равном 0 получим исключение.
    k -= 1
    print(f'5/{k} = {5/k}')

    # Это условие никогда не выполнится.    
    if k < -1: flag = False     
Внутри цикла!..
Продолжить (y/n)? y
Внутри цикла!..
Продолжить (y/n)? n

5/2 = 2.5
5/1 = 5.0
Ошибка! Продолжить (y/n)? y
5/2 = 2.5
5/1 = 5.0
Ошибка! Продолжить (y/n)? n

5/2 = 2.5
5/1 = 5.0
division by zero


























 

Пример №2. Создание бесконечного цикла (часть 2).

Бесконечные циклы – мощный инструмент в руках программиста, но они требуют аккуратного использования и понимания того, как и когда их стоит применять. В частности, не стоит забывать про наличие условия выхода из цикла и разумное влияние цикла на потреблению ресурсов системы.

Подробнее о циклах в Питоне можно почитать в параграфе «Циклы for и while в Python» нашего учебника.