输入名称,带空格和验证

时间:2018-07-22 19:59:25

标签: python

我正在使用.isalpha函数来输入名称。它可以正常工作,但是每当我在姓名之间加上空格时,例如全名 John Doe ,就会给我错误。

到目前为止,我尝试过的

 while not name.isalpha():
    print('Entered Name is invalid')
    name = input('Please Enter Your Name Sir:     ')
 if name.isalpha()  or name.isspace():
    print('Hello Mr.' + name)
    select_mmenu('main-menu.txt')

我尝试将.isalpha和.isspace组合在一起,但似乎不起作用。需要最简单的方法来解决这个问题

3 个答案:

答案 0 :(得分:4)

isalpha测试字符串的每个成员是一个字母。 isspace测试字符串的每个成员是否为空格字符。这些都不是您想要的。

相反,您可以这样做:

if all(lett.isalpha() or lett.isspace() for lett in name):

,如果每个字母都是一个字母或一个空格,它将通过。另外,您可以匹配一个正则表达式:

import re  # at the top of your module

if re.match(r"[\s\w]+$", name):

可以说更干净,肯定更强大。方括号表示字符类,\s是所有空格,\w是所有单词字符,+表示“匹配1次或多次”,而$是字符串的结尾。 [\s\w]+$的意思是“一个或多个空格或文字字符,之后什么也没有。

答案 1 :(得分:0)

它肯定会给您带来错误,因为isalpha()方法检查字符串是否仅包含字母字符。因此,如果放置空格,结果将返回false而不是true,并且会出现错误。

答案 2 :(得分:0)

谢谢您的回答。我不使用all()函数就解决了。我只是用最简单的基本Python循环解决了它

谢谢亚当·斯密(Adam Smith),因为您的回答使我有了解决该问题的想法

con = False
while con!=True:
    l=0
    strs = input('Enter your Name: ')
    for i in strs:
        if i.isalpha() or i.isspace():
            l += 1
    if l == len(strs):
    con = True    
    break
    else:
        print('Wrong Input')

if con==True:
    print(strs)

在此代码中,它基本上计算输入长度和字母以及空格长度(如果匹配)。否则while循环会继续。