我需要做的是将用户输入与正则表达式匹配,并根据匹配/不匹配的输入返回True或False函数。如果匹配,则会打印出肯定的响应,反之亦然。def本身不应该打印任何内容。这将循环,直到用户只输入回车,导致程序刚刚退出。到目前为止,当我按下回车键时,程序一直在尝试将输入与模式相匹配。所以就在那里,我完全陷入了困境。
我一直在尝试为except
块使用不同的语句,使用另一个只有换行符的模式并在except
块上指定它,但由于我对编程非常陌生,我很难知道该找什么来解决这个问题。我搜索过类似的东西:"当输入与正则表达式不匹配时退出while循环"、"当用户输入输入时退出"等等,但都没有用。我只是无法理解我应该如何构建它,以实现一个按预期工作的程序。我相信我的问题在while
环路内
到目前为止,这是我的代码。您可以忽略regex模式,因为它目前只是一个占位符。except
区块现在是空的,因为我没有想法,真的很沮丧。我希望我对这个程序和我的问题的描述不是含糊或不连贯的,如果是这样的话,我会用更多的信息更新我的帖子。
valid_name = re.compile(r"[A-Z][a-z]")
def name(user_in):
if valid_name.match(user_in.strip()):
return True
else:
return False
while True:
user_in = input("Enter a name (use uppercase for first letter): ")
try:
if name(user_in) == True:
print("Name '", user_in.strip(), "' is valid!", sep="")
else:
print("Name '", user_in.strip(), "' is invalid!", sep="")
except:
break
我设法解决了它。以下是我对while
循环的更新:
while True:
user_in = input("Enter a name (use uppercase for first letter): ")
if not user_in:
break
else:
stripped = user_in.strip()
if name(user_in(stripped) == True:
print("Name '", stripped, "' is valid!", sep="")
else:
print("Name '", stripped, "' is invalid!", sep="")
我还制作了一个新的变量,剥离输入,而不是在函数中使用剥离函数。不确定这里有什么最佳实践。