关于python:如果用户键入数字而不是字母,请显示此错误

If user types numbers instead of letters, show this error

本问题已经有最佳答案,请猛点这里访问。

我正在创建一个程序,它从用户那里收集数据,我已经完成了收集他们名字、姓氏、年龄等的基本输入;但是我希望用户的名字或姓氏中没有数字。

如果用户在名字中键入一个数字,例如"aaron1",或者他们的姓氏是"cox2";它将重复询问他们的名字的问题。

尝试1

1
2
3
4
5
firstname=input("Please enter your first name: ")
     if firstname==("1"):
          firstname=input("Your first name included a number, please re-enter your first name")
     else:
          pass

尝试2

1
2
3
4
5
6
7
8
firstname=input("Please enter your first name: ")
try:
    str(firstname)
except ValueError:
    try:
        float(firstname)
    except:
        firstname=input("Re-enter your first name:")

有什么建议吗?


您可以使用isalpha方法检查名称是否只包含字母。

1
2
3
4
5
#The following import is only needed for Python 2 to handle non latin characters
from __future__ import unicode_literals

'?ód?'.isalpha() # True
'?ód?1'.isalpha() # False

首先创建一个函数,检查字符串中是否有数字:

1
2
def hasDigits(inputString):
    return any(char.isdigit() for char in inputString)

然后使用循环不断请求输入,直到它不包含数字。

示例循环如下所示:

1
2
3
4
firstname=input("Please enter your first name: ")

while hasDigits(firstname):
    firstname=input("Please re-enter your first name (Without any digits): ")

实况示例