如果我在Python脚本中提交一个简单的错误,我正试图弄清楚是否有办法“强迫”Python脚本“不再”回到bash环境中。
这是一个MWE(MWE.py)来说明这一点:
如果我在下面的MWE中按3,你怎么能告诉Python不要让我退出程序?
x = raw_input("Please input a number 1 or 2: ")
if (x == '1'):
print '1'
elif (x == '2'):
print '2'
#else:
#print 'Neither 1 nor 2.'
请注意,我的最后两行已注释掉。如果我取消注释它们,显然我会得到相应的print语句,程序将成功完成。但是,让我们假设我没有最后两行,并希望MWE.py“保持在Python模式”(可以这么说)而不是严厉地让我回到bash shell,从而迫使我从头开始重新运行python MWE.py
。
有没有办法以某种方式实现这一目标?
显然,这是一个微不足道的MWE,但我正在尝试理解这个原则:是否有可能在我提交输入错误之前返回我提交的最后一个提示(例如我在这个MWE中提交的时候)按3)。是否基本上有一种“通用方式”可以回到x = raw_input("Please input a number 1 or 2: ")
(或者在我输入错误之前我最近提示的其他提示)?
这在需要在不同阶段进行多个用户输入的程序中显得特别重要。我不想从头开始。
答案 0 :(得分:6)
它被称为循环(不需要围绕条件的括号):
x = None
while x != '1' and x != '2':
x = raw_input("Please input a number 1 or 2: ")
if x == '1':
print '1'
elif x == '2':
print '2'
else:
print 'Neither 1 nor 2.'
print "all OK"
有很多方法可以写这个。您应该注意在循环之前初始化x
的方式,None
在python中是典型的。
另请注意,x
的值是字符串,而不是int
。
如果您要测试大量可能的值,这很快就会变得难以处理。所以另一种方法是在正确的回复中使用无限循环和break
:
x = None
while True:
x = raw_input("Please input a number 1 or 2: ")
if x == '1':
print '1'
break
elif x == '2':
print '2'
break
else:
print 'Invalid input, try again'
print "all OK"