我正在尝试验证用户输入以检查,当他们输入他们的名字时,它超过2个字符并且是字母。我试图使用try / except来做这个,因为我被告知这是用户验证的最佳循环。不幸的是,如果用户输入的字符不是字母,则没有任何反应,并且程序正常进行。我也不知道如何在try / except循环中检查输入是否超过2个字符,因为它对我来说是一个新手。非常感谢任何帮助。
list = []
def users_name():
while True:
try:
name = str(input("Please enter your first name: "))
list.append(name)
break
except TypeError:
print("Letters only please.")
continue
except EOFError:
print("Please input something....")
continue
users_name()
答案 0 :(得分:2)
由于continue
块中的catch
子句,您的程序将继续运行。
您还可以检查他们输入的内容的长度是否超过两个字符。
list = []
def users_name():
while True: # Never ending loop
try:
name = str(input("Please enter your first name: "))
if (len(name) > 2)
list.append(name)
break
except TypeError:
print("Letters only please.")
continue # This causes it to continue
except EOFError:
print("Please input something....")
continue # This causes it to continue
users_name()
另外,你可能想以某种方式停止循环。插入数组时可能会放入break
子句吗?
if(len(name) > 2)
list.append(name)
break
...
要检查输入是数字还是字母字符,请使用isdigit()
或isalpha()
if a.isalpha():
#do something
elif a.isdigit():
#do something
您的代码将如下所示:
list = []
def users_name():
while True: # Never ending loop
try:
name = str(input("Please enter your first name: "))
if (len(name) > 2 && name.isalpha()):
list.append(name)
break
else:
raise TypeError
except TypeError:
print("Letters only please.")
continue # This causes it to continue
except EOFError:
print("Please input something....")
continue # This causes it to continue
users_name()
此外,如果您使用的是Python< 3考虑使用raw_input()
。 input()
实际上会将输入评估为Python代码。
答案 1 :(得分:0)
要检查String的长度,可以使用方法len()
来获取其字符长度。然后,您可以选择大于2或所需长度的那些。
要检查字符串是否只包含字母字符,可以使用str.isalpha()
方法进行检查。
因此,如果您检查len(name) > 2 and name.isalpha()
将帮助您过滤那些与您想要的不匹配的字符串:
>>> name = "MyName"
>>> len(name) > 2 and name.isalpha()
True
>>> wrong_name = "My42Name"
>>> len(wrong_name) > 2 and wrong_name.isalpha()
False
>>> short_name = "A"
>>> len(short_name) > 2 and short_name.isalpha()
False