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