#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()
функции не будет выполнен. Остальные вопросы задаваться не будут.