防止 input() 不是字母字符

2 python string error-handling input python-3.x

为了自知之明,我正在尝试制作一个程序。我想问用户他们的名字是什么,我只希望用户能够使用字母表中的字母来回答,或者只能使用字符串。我不希望他们能够用数字、符号等来回答。

def cc():
  name = (input("""Hello, what happens to be your first name?  
        > """))
  if type(name) is str:
      print("You have entered a name correctly.")
  elif type(name) is int:
      print("Your name cannot be an integer. Try again.")
      cc()

cc()
Run Code Online (Sandbox Code Playgroud)

Chr*_*ean 5

您可以使用str.isalpha. 从文档:

如果字符串中的所有字符都是字母并且至少有一个字符,则返回 true,否则返回 false。字母字符是在Unicode字符数据库中定义为“字母”的字符,即一般类别属性为“Lm”、“Lt”、“Lu”、“Ll”或“Lo”之一的字符。请注意,这与 Unicode 标准中定义的“字母”属性不同。

这是一个示例程序:

while True:
    name = input('Enter a name using only alphabetic characters: ')
    if name.isalpha():
        break
Run Code Online (Sandbox Code Playgroud)

演示:

Enter name using only alphabetic characters:  Bo2
Enter name using only alphabetic characters:  Bo^&*(
Enter name using only alphabetic characters:  Bob
Run Code Online (Sandbox Code Playgroud)

请注意,此方法不适用于具有连字符名称的人,例如"Anne-Marie"