![](/img/trans.png)
[英]Cherrypy, REST : how can i pass an optional argument to the GET function that if it isn't given in the URL is set to a specific value?
[英]How can I restart a function if the argument isn't numeric?
我正在写一个GPA计算器,我想确保输入的类数是一个数值。 如果没有,如何使下面的函数返回?
def get_num_classes(n):
num_classes = n
if n.isnumeric():
return int(num_classes)
else:
#???
在主文件中,该函数称为: num_classes = grade_fcns.get_num_classes(input("Number of classes this semester: "))
使用while
循环将输入的验证委托给int
:
def get_num_classes():
while True:
try:
return int(input("Number of classes this semester: "))
except ValueError:
print('Try again')
print(get_num_classes())
例:
Number of classes this semester: s
Try again
Number of classes this semester: sd
Try again
Number of classes this semester: 3
3
该解决方案不倾向于无限递归(以及不可避免的堆栈溢出)。
考虑到“ None
”没有任何意义(我的意思是,这没有其他意义,例如“不是有效的内容”),我将尝试这样做:
def get_num_classes(n):
num_classes = n
if n.isnumeric():
return int(num_classes)
return None #There's no need of else here, once we're talking about return statements
然后从while(True)
语句中调用它:
while (True):
answer = get_num_classes(input("Number of classes this semester: "))
if answer is not None:
#Do something else
break
else:
print("Try again...\n")
这种方法不是递归的,但是while(True)
可以永远挂在那里时,您应该小心。 您甚至可以使用try / except方法,例如,可以在其中检查其他条件:它是整数吗? 大于0吗? 是在x
和y
之间吗? 并且,如果不满足这些条件,则引发一个异常,例如AttributeError
,然后将其捕获到主代码中。
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.