gpt4 book ai didi

python - 在 Python 脚本中重试用户输入

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:04 25 4
gpt4 key购买 nike

如果我在我的 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.'

请注意,我的最后两行被注释掉了。如果我取消对它们的注释,显然我会得到相应的打印语句并且程序会成功完成。但是,假设我没有最后两行,并且希望 MWE.py “保持 Python 模式”(可以这么说)而不是严厉地将我返回到 bash shell,从而迫使我从头开始重新运行python MWE.py.

有什么办法可以做到这一点吗?

显然,这是一个微不足道的 MWE,但我试图理解其原理:是否有可能只返回在我输入错误之前出现的最后一个提示(例如当我在这个 MWE 中提交时按下 3).基本上是否有一种“通用方法”可以返回到 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"

有多种写法。您应该注意如何在循环之前初始化 xNone 在 python 中是典型的。

还要注意 x 的值是一个字符串,而不是一个 int

如果您要测试大量可能的值,这很快就会变得笨拙。因此,另一种方法是使用无限循环并在正确回复时中断:

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"

关于python - 在 Python 脚本中重试用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30993853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com