1

好的,所以我定义了一个用户可以输入他/她名字的函数。我想让它不允许用户输入像“69”这样的数字作为他/她的名字。我该怎么做呢?这是我使用的代码:

def name():
    while True:
        name = input("What is your name? "))
        try:
            return str(name)
            break
        except TypeError:
            print("Make sure to enter your actual name.")
4

3 回答 3

4

您可以使用isalpha()检查名称:

如果字符串中的所有字符都是字母并且至少有一个字符,则返回 true,否则返回 false。

>>> "69".isalpha()
False
>>> "test".isalpha()
True

这是您的修改后的代码:

while True:
    name = input("What is your name? ")
    if name.isalpha():
        break
    else:
        print("Make sure to enter your actual name.")
        continue

或者:

name = input("What is your name? ")

while not name.isalpha():
    print("Make sure to enter your actual name.")
    name = input("What is your name? ")
于 2013-09-15T19:00:30.140 回答
2

您可以使用str.isdigit()方法检查字符串是否仅包含数字:

name = input("What is your name? ")

while name.isdigit():
    print("Make sure to enter your actual name.")
    name = input("What is your name? ")

请注意,这将允许使用 - 之类的名称"Rohit1234"。如果您只想允许字母字符,那么您可以使用str.isalpha()方法来代替。

于 2013-09-15T18:59:38.347 回答
0

颠倒你的逻辑:

while True:
    name = ...
    try:
       int(name)
       print "Name can't be a number."
    except TypeError:
       return str(name)

请注意,这将接受任何不是有效整数的输入,包括123abc左右。

于 2013-09-15T19:01:10.920 回答