如何提供错误检查以确保用户输入仅允许字母并在键入数字时提供循环错误消息?

时间:2015-09-26 00:58:01

标签: python

我正在尝试为userName输入提供一个循环错误消息,以便用户在输入除字母aA-zZ以外的任何内容时收到错误消息,(我不想让用户特别输入数字)。我希望它的操作类似于我用于customerAge输入的那个(我作为示例提供)。但我似乎无法找出完成此任务的正确代码。任何人都可以提供一些见解吗?

customerName = input('Enter your name: ')

customerAge = int(input('Enter your age: '))
while customerAge <= 15 or customerAge >= 106:
    print('Invalid entry')
    customerAge = int(input('Enter your age: '))

4 个答案:

答案 0 :(得分:2)

在审核了我收到的所有答案后(感谢所有人的帮助)。我这样编码,看起来运行正常。

customer_name = input('Please enter your name: ')
while not customer_name.isalpha():
    print('invalid Entry')
    customer_name = input('Please enter your name: ')

答案 1 :(得分:0)

让我们从您的计划需要做的开始:

循环直到输入有效

这将是以下形式的各种验证:

1)用户插入内容

2)出了点问题

3)程序通知用户并再次要求输入

所以,在python中:

valid = False
while not valid:
    valid = True
    customer_name = input('Enter your name: ')
    customer_age = int(input('Enter your age: '))
    if customer_age <= 15 or customer_age >= 106:
         print 'Enter a valid age'
         valid = False
    if not customer_name.isalpha():
        print 'Enter a valid name'
        valid = False

我们在这里做了什么:

1)将valid设置为True,这样快乐的案例就会让我们走出循环

2)获得两个值

3)如果其中任何一项无效,请将valid设为False并告知情况

您甚至可以使用2个循环来单独验证。

有关isalpha()方法的说明:您可以在here

中找到文档this question及其相关信息。

另外,作为底线建议:永远不要在python变量中使用camel case。

该符号保留给Class个名称。对于变量,请使用小写和_

答案 2 :(得分:0)

正则表达式应该做你想做的事情

import re
while 1:
    name = raw_input("Enter your name: ")
    if re.search(r'(?i)[^a-z]', name):
        print("Invalid name")
    else:
        break

答案 3 :(得分:-1)

使用type功能检查每个字符的type()

u_input = raw_input()
valid = ""
for char in u_input:
    if str(type(char)) == "<type 'int'>":
        valid = "False"
        break
    else:
        pass

if valid == 'False':
    print 'This string has a number! Gosh darn it!"

将它放在函数/ while循环中,然后出现循环错误消息。您可以添加其他循环以确保任何其他参数 这是最简单,也可能是最有效的方式。

有关type()的更多信息,请访问https://docs.python.org/2/library/functions.html#type