我如何禁止数字作为输入?

时间:2013-09-15 18:57:26

标签: python

好吧,所以我定义了一个用户可以输入他/她名字的功能。我想这样做是为了不允许用户为他/她的名字输入类似“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.")

3 个答案:

答案 0 :(得分:4)

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

  

如果字符串中的所有字符都是字母,那么返回true   至少是一个字符,否则就是假。

>>> "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? ")

答案 1 :(得分: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()方法。

答案 2 :(得分:0)

反转你的逻辑:

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

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