我是Python语言的初学者。在python中是否有“try and except”函数来检查输入是一个LETTER还是多个LETTERS。如果不是,请再次输入? (我做了一个你必须输入一个整数)
def validation(i):
try:
result = int(i)
return(result)
except ValueError:
print("Please enter a number")
def start():
x = input("Enter Number: ")
z = validation(x)
if z != None:
#Rest of function code
print("Success")
else:
start()
start()
当执行上面的代码并输入一个整数时,你会得到:
Enter Number: 1
Success
如果输入无效值,例如输入字母或浮点数,则可以得到:
Enter Number: Hello
Please enter a number
Enter Number: 4.6
Please enter a number
Enter Number:
正如您所看到的,它会一直循环,直到输入有效的 NUMBER 值。那么是否可以使用“try and except”功能来保持循环,直到输入字母为止?为了更清楚,我将用模糊的结构化英语解释,而不是伪代码,但只是为了让它更清晰:
print ("Hello this will calculate your lucky number")
# Note this isn't the whole program, its just the validation section.
input (lucky number)
# English on what I want the code to do:
x = input (luckynumber)
所以我想要的是,如果变量“x”不是字母或多个字母,它应该重复此输入(x),直到用户输入有效的字母或多个字母即可。换句话说,如果没有输入字母,程序将不会继续,直到输入为字母。我希望这更清楚。感谢。
答案 0 :(得分:2)
你可以在try / except子句中再次调用相同的函数 - 为此,你必须稍微调整一下你的逻辑:
def validate_integer():
x = input('Please enter a number: ')
try:
int(x)
except ValueError:
print('Sorry, {} is not a valid number'.format(x))
return validate_integer()
return x
def start():
x = validate_integer()
if x:
print('Success!')
答案 1 :(得分:0)
在简单迭代时,不要在Python中使用递归。
def validate(i):
try:
result = int(i)
return result
except ValueError:
pass
def start():
z = None
while z is None:
x = input("Please enter a number: ")
z = validate(x)
print("Success")
start()