from random import randrange, uniform
def match (x, y):
if x == y:
print("True!")
else:
print("False")
return
def main():
while True:
match(randrange(0, 10), randrange(0, 10))
while True:
match(randrange(0, 10), randrange(0, 10))
while True:
match(randrange(0, 10), randrange(0, 10))
main()
正如您所看到的,有两个功能。在随机整数中循环直到它们匹配的main()
,和将实际整数传递到其中以便进行计算的match()
,以及如果遇到错误结果,两个循环都应该中断。此代码有两个问题:
- 循环永远不会中断,因为返回只适用于运行代码的函数。我的目标是在返回错误结果时停止主函数
- 可以在每行上添加if语句,以检查返回的False结果。然而,这将是非常低效的,而且根本不理想。一定有更好的办法
我应该注意,这是我根据实际代码中的一个问题建模的代码,这个问题很长,没有上下文就无法复制粘贴到这里。同样的原理仍然适用:就像这里的代码一样,当主函数调用的子函数计算出错误的结果时,我必须停止它的进一步计算。
我该怎么做?我的想法是以某种方式从子函数match()
中停止主函数,但这可能吗?如果没有,我有什么选择?
from random import randrange, uniform
def match (x, y):
if x == y:
print("True!")
else:
print("False")
raise Exception()
def main():
try:
while True:
match(randrange(0, 10), randrange(0, 10))
while True:
match(randrange(0, 10), randrange(0, 10))
while True:
match(randrange(0, 10), randrange(0, 10))
except:
print("exit")
main()
这可能不是你想要的答案,但我想这可能会有所帮助。
通过使用try-and-except创建一个包含所有while
循环的范围,您可以通过引发异常退出该函数。
如果您想完全结束函数(不在函数中执行try/except
(,您可以简单地执行以下操作:
try:
main()
except:
#something else
这也允许您在不修改函数本身的情况下执行此操作。