我是python的初学者。我想要求用户输入他的名字。名称应该只包含字母A-Z,如果没有,我想显示错误并请求用户再次输入名称,直到名称正确。这是我正在尝试的代码。但是,即使字符串包含数字和特殊字符,也不会检查该字符串。我哪里错了?
def get_first_name():
try_again = True
while(try_again==True):
first_name = raw_input("Please enter your first name.")
if (re.match("^[A-Za-z]+$", first_name)==False):
try_again = True
else:
try_again = False
return first_name
答案 0 :(得分:2)
您不需要re
,只需使用str.isalpha
def get_first_name():
while True:
first_name = raw_input("Please enter your first name.")
if not first_name.isalpha(): # if not all letters, ask for input again
print "Invalid entry"
continue
else: # else all is good, return first_name
return first_name
In [12]: "foo".isalpha()
Out[12]: True
In [13]: "foo1".isalpha()
Out[13]: False
答案 1 :(得分:0)
if (re.match("^[A-Za-z]+$", first_name)==False):
当没有匹配时,re.match返回None。没有不等于假。你可以这样写:
if not re.match("^[A-Za-z]+$", first_name):