Как разбить while l oop, если условие ложно? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть длинная функция, в которой я проверяю различные параметры, и если какой-либо из параметров имеет значение False, я не хочу выполнять код дальше.

Насколько вы понимаете, это то, как я хочу заставить его работать

Email = True
while(Email == True):
    print("Execute Me")
    Email = False # Break the while loop here
    print("Never execute me")

Вот псевдо-версия моего кода:

def users_preferences(prefs):
    for pref in prefs:
        send_email = True
        while(send_email == True):
            # Set send_email = False if email is not verified and don't move to the next line
            # Set send_email = False if user's email is not a part of specific group
            ...
            ...

Как я могу сломать l oop, если условие ложно в любой момент без дальнейшее выполнение кода?

Изменить: проблема с операторами break состоит в том, что станет громоздко проверять условие перед запуском нового оператора, в котором у вас есть количество операторов

Ответы [ 2 ]

3 голосов
/ 13 июля 2020

Вы можете использовать обычный break оператор:

Email = True
while Email:
    print("Execute Me")
    Email = False # Break the while loop here
    if not Email:
        break
    print("Never execute me")

Изменить: если while l oop не делает ничего особенного, код можно изменить на:

for pref in prefs:
    if not is_email_verified(email) or not is_user_in_group(user, group):
        continue
    send_email(email)
0 голосов
/ 13 июля 2020

Здравствуйте, ваш код должен быть лучше отступом. Также почему вы не пытались использовать оператор break, чтобы выйти из l oop?

Email = True
while Email:
    # do something
    break
# continue doing something
...