Выйти из цикла while внутри оператора if в функции - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я застрял на чем-то, что пытаюсь разорвать цикл while, подобный этому

while True
    if blah blah
        function()
        if blah blah:
            #break while loop

Я перепробовал много методов, но не могу заставить его работать, можеткто-нибудь научит меня?

РЕДАКТИРОВАТЬ: я исправил пример, который я напечатал выше.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Если вам нужно разорвать цикл изнутри функции, есть несколько способов сделать это:

  • вернуть True / False из функции и проверить возвращаемое значение в цикле
  • вызывает специальное исключение из функции и перехватывает его внутри цикла

Примеры:

# example 1
def function():
    if cloudy and not umbrella:
        print "no good to stay outside"
        return False
    return True

while nice_weather:
    if not function():
        break


# example 2
class RunHome(Exception):
    pass

def function():
    if thunderstorm:
        raise RunHome()

while enjoying:
    try:
        function()
    except RunHome as re:
        break

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

0 голосов
/ 25 сентября 2018

Это именно то, что делает оператор break.

while True:
    function()
    if blah blah:
        break

Конечно, если возможно, вы должны переместить тест в состояние цикла.

while not blah blah:
    function()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...