Rob*_*Rob 6 python recursion try-catch while-loop python-3.x
我是一个蟒蛇菜鸟,希望有人能在这里指出我正确的方向。
我正在尝试获取用户输入并且只接受大写和小写字母。
如果输入了其他任何内容,那么我想再次询问用户是否输入有效(字母)。
我的代码有效(在某种程度上) - 如果输入了正确的值,它会按预期工作,但是如果输入了无效值,它会再次提出问题,但现在即使输入了有效值,它也需要输入尽可能多的值是错误的答案。
我知道可能有更好的方法来做我想做的事(我在下面有一个不同的工作解决方案,但我的好奇心是为什么这个脚本的行为如此)
import string
def get_guess():
lower_letters = list(string.ascii_lowercase)
while True:
try:
guess = input('Guess a letter: ')
if guess.lower() in lower_letters:
return guess
else:
get_guess()
except:
print("That's not a valid option!")
letter = get_guess()
print(letter)
Run Code Online (Sandbox Code Playgroud)
我知道我可以用下面的代码替换该代码并得到我想要的结果,但是你能解释一下为什么上面的代码在做它是什么 - 再一次,如果这是一个明显的菜鸟问题,我就是不能放过它。
工作代码:
import re
while 1:
inputString = input()
if re.match(r"^[A-Z,a-z]$", inputString):
print("Input accepted")
break
else:
print("Bad input, please try again")
Run Code Online (Sandbox Code Playgroud)
如果有比我提供的 2 个片段更好的方法来获得相同的结果,也请随时向我指出任何其他资源 - 我总是愿意学习。
谢谢大家。