防止input()不是字母字符

时间:2017-08-17 22:32:06

标签: python string python-3.x input error-handling

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

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()

2 个答案:

答案 0 :(得分:3)

您可以使用str.isalpha强制执行此要求。来自文档:

  

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

以下是一个示例程序:

while True:
    name = input('Enter a name using only alphabetic characters: ')
    if name.isalpha():
        break

<强>演示:

Enter name using only alphabetic characters:  Bo2
Enter name using only alphabetic characters:  Bo^&*(
Enter name using only alphabetic characters:  Bob

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

答案 1 :(得分:0)

我同意这个问题有点误导。但是,根据您的说法,您只需使用正则表达式即可完成此任务。

import re
...
if not re.findall('[^a-zA-Z]', 'abc1'):
   print("You have entered a name correctly.")
else
   print("Your name cannot be an integer. Try again.")
   cc()