【发布时间】:2022-01-11 00:00:40
【问题描述】:
我的问题很简单。这是概念:
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() 中停止主函数,但这可能吗?如果没有,我有什么选择?
【问题讨论】:
-
我认为您的意思是想找到一种方法来打破所有
while循环,而不必修改每个while循环? -
信不信由你,向我们展示您的实际代码和您的实际问题可能更有效率。 XY 问题就是这样产生的。
标签: python python-3.x function