如何解决验证int数在一定范围内 Python-3.x
我正在制作这款游戏,用户必须从5个选项中进行选择。因此,他必须输入1到5之间的任意数字才能选择一个选项。现在这是我面临的问题,我只是想不出用户无法输入除1到5的整数以外的任何其他字符的方式,如果他输入了错误的字符,我该怎么办?显示他的错误,然后让他再次输入?这是我尝试过的:
def validateOpt(v):
try:
x = int(v)
if int(v)<=0:
x=validateOpt(input("Please enter a valid number: "))
elif int(v)>5:
x=validateOpt(input("Please enter a valid number: "))
return x
except:
x=validateOpt(input("Please enter a valid number: "))
return x
validateOpt用于验证选项的编号,即1,2,3,4,5。它可以正常工作,但是每当我输入33,22、55或其他任何从1到5的其他int数两次(不是三次甚至四次,但只有两次),它都不会显示任何错误并继续前进,并且,我想是错的。我只是一个初学者。
解决方法
您可以使用while
循环来完成此操作,类似的事情应该是一个好的开始:
def getValidInt(prompt,mini,maxi):
# Go forever if necessary,return will stop
while True:
# Output the prompt without newline.
print(prompt,end="")
# Get line input,try convert to int,make None if invalid.
try:
intVal = int(input())
except ValueError:
intVal = None
# If valid and within range,return it.
if intVal is not None and intVal >= mini and intVal <= maxi:
return intVal
然后用类似这样的名称来调用它:
numOneToFive = getValidInt("Enter a number,1 to 5 inclusive: ",1,5)
,
使用while循环而不是递归,您可以检查用户数据并返回其是否有效,尽管如果用户要在没有有效输入的情况下退出或退出,则可能需要考虑使用break子句。
def get_input(minimum,maximum):
while True:
try:
x = int(input(f"please enter a valid number from {minimum} to {maximum}: "))
if minimum <= x <= maximum:
return x
except ValueError as ve:
print("Thats not a valid input")
value = get_input(1,5)
,
用于1到5之间的循环
,尝试以下代码,它将一直提示用户输入5,请注意,如果递归太深,这可能会导致堆栈溢出:
def f():
x = input("Enter an integer between 1 and 5:")
try:
x = int(x)
if x<=0 or x>5:
f()
except:
f()
f()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。