我正在尝试为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: '))
答案 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