Как вернуться к первому оператору if, если нет допустимых вариантов

Как я могу переместить Python в начало оператора if, если ни одно условие не выполняется правильно.

У меня есть базовый оператор if / else, подобный этому:

print "pick a number, 1 or 2"
a = int(raw_input("> ")

if a == 1:
    print "this"
if a == 2:
    print "that"
else:
   print "you have made an invalid choice, try again."

Я хочу предложить пользователю сделать другой выбор для этого оператора if без необходимости перезагрузки всей программы, но я очень новичок в Python и не могу найти ответ в интернете где угодно.

3 ответов


довольно распространенный способ сделать это-использовать while True цикл, который будет работать бесконечно, с break операторы для выхода из цикла, когда вход действителен:

print "pick a number, 1 or 2"
while True:
    a = int(raw_input("> ")
    if a == 1:
        print "this"
        break
    if a == 2:
        print "that"
        break
    print "you have made an invalid choice, try again."

здесь также есть хороший способ ограничить количество попыток, например:

print "pick a number, 1 or 2"
for retry in range(5):
    a = int(raw_input("> ")
    if a == 1:
        print "this"
        break
    if a == 2:
        print "that"
        break
    print "you have made an invalid choice, try again."
else:
    print "you keep making invalid choices, exiting."
    sys.exit(1)

вы можете использовать рекурсивную функцию

def chk_number(retry)
    if retry==1
        print "you have made an invalid choice, try again."
    a=int(raw_input("> "))
    if a == 1:
        return "this"
    if a == 2:
        return "that"
    else:
        return chk_number(1)

print "Pick a number, 1 or 2"
print chk_number(0)

используйте цикл while.

print "pick a number, 1 or 2"
a = None
while a not in (1, 2):

    a = int(raw_input("> "))

    if a == 1:
        print "this"
    if a == 2:
        print "that"
    else:
        print "you have made an invalid choice, try again."