如果没有选择有效,如何返回第一个if语句

won*_*t77 10 python if-statement raw-input

如果没有正确满足条件,如何让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."
Run Code Online (Sandbox Code Playgroud)

我想要的是提示用户为这个if语句做出另一个选择,而不必重新启动整个程序,但我对Python很新,并且无法在任何地方在线找到答案.

And*_*ark 11

一种相当常见的方法是使用一个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."
Run Code Online (Sandbox Code Playgroud)

这里还有一种很好的方法来限制重试次数,例如:

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)
Run Code Online (Sandbox Code Playgroud)