我试图弄清楚,如果我在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.'
Run Code Online (Sandbox Code Playgroud)
请注意,我的最后两行已注释掉.如果我取消注释它们,显然我会得到相应的print语句,程序将成功完成.但是,让我们假设我没有最后两行,并希望MWE.py"保持在Python模式"(可以这么说)而不是严厉地让我回到bash shell,从而迫使我从头开始重新运行python MWE.py.
有办法以某种方式实现这一目标吗?
显然,这是一个微不足道的MWE,但我试图理解这个原则:是否有可能在我提交输入错误之前返回我所呈现的最后一个提示(例如当我按下3时在此MWE中提交) .是否基本上有一种"通用的方式"可以回到x = raw_input("Please input a number 1 or 2: ")(或者在我输入错误之前给出的最新提示)?
这在需要在不同阶段进行多个用户输入的程序中显得特别重要.我不想从头开始.
它被称为循环(不需要围绕条件的括号):
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"
Run Code Online (Sandbox Code Playgroud)
写这个有很多种方法.你应该注意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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1082 次 |
| 最近记录: |