Как не запускать остальную часть инструкции If, если она ложна?

#python #python-3.x #if-statement #nested

#python #python-3.x #if-statement #вложенный

Вопрос:

Для следующей программы, если ответ на какой-либо вопрос лишает пользователя права голоса, то как мне заставить программу сказать об этом сразу и не задавать оставшиеся вопросы?

 def main():
    print("This program determines if a user is eligible to vote in the USn")

    q1 = str(input("Are you a US citizen? y/n: "))
    q2 = int(input("What is your age?: "))
    q3 = str(input("Do you meet your state's residency requirement? y/n: "))

    if q1 == "n":
        print("nNot eligible to vote.")
    elif q2 < 18:
        print("nNot eligible to vote.")
    elif q3 == "n":
        print("nNot eligible to vote.")
    else:
        q1 == "y"
        q2 >= 18
        q3 == "y"
        print("nYou are eligible to vote!")
main()
  

Комментарии:

1. Задайте вопрос 1, проверьте, действителен ли он, return если нет. Затем задайте вопрос 2, промойте и повторите.

Ответ №1:

Используйте вложенный оператор «if else», завершающий выполнение, когда один из вопросов неверен. Вот так:

 def main():
print("This program determines if a user is eligible to vote in the USn")

q1 = str(input("Are you a US citizen? y/n: "))
if q1 == 'y':
    q2 = int(input('What is your age?:  '))
    if q2 > 18:
        q3 = str(input('Do you meet your states residency requirement? y/n:  '))
        if q3 == 'y':
            print("nYou are eligible to vote!")
        else:
            print("nNot eligible to vote.")
            exit()
    else:
        print("nNot eligible to vote.")
        exit()
else:
    print("nNot eligible to vote.")
    exit()
main()
  

Комментарии:

1. Пожалуйста, исправьте отступ.

2. Хм … на самом деле это было не главное. Я просто демонстрировал код, который понадобится fizzy.

Ответ №2:

Если вам не нужны результаты вопросов позже, вы можете просто поместить input в if условие и связать их с and . Таким образом, второе input не запрашивается повторно, если первое уже определило результат условия, и то же самое для третьего.

 if (input("Are you a US citizen? y/n: ") == "y" and
        int(input("What is your age?: ")) >= 18 and
        input("Do you meet your state's residency requirement? y/n: ") == "y"):
    print("nYou are eligible to vote!")
else:
    print("nNot eligible to vote.")
  

Вы также можете объединить это с (...) или or , чтобы получить более сложные условия, хотя в какой-то момент использование вложенной if/else структуры может стать более читаемым.

Ответ №3:

Вам нужно будет проверять ввод пользователя после каждого input оператора. Вы можете использовать оператор if-else каждый раз. В случае, если ответ неверен, выведите что-нибудь, а затем используйте return , и оставшийся код в main() функции не будет выполнен. Остальные вопросы задаваться не будут.