在下面的代码中,我希望while循环在b c = 1000时立即退出.但是,使用print语句进行测试表明它只会持续到for循环完成.我尝试过True,然后在if语句中设置False,但这导致无限循环.我认为使用x = 0然后设置x = 1可能会起作用,但这也只是运行直到for循环结束.什么是最优雅,最快速的退出方式?谢谢.
a = 3 b = 4 c = 5 x = 0 while x != 1: for a in range(3,500): for b in range(a+1,500): c = (a**2 + b**2)**0.5 if a + b + c == 1000: print a,b,c print a*b*c x = 1
解决方法
while循环仅在控件返回时才匹配条件,即完全执行for循环时.所以,这就是为什么你的程序即使满足条件也不会立即退出.
但是,如果a,c的任何值都没有满足条件,那么你的代码将以无限循环结束.
你应该在这里使用一个函数,因为return语句可以满足你的要求.
def func(a,c): for a in range(3,c print a*b*c return # causes your function to exit,and return a value to caller func(3,4,5)
除了@Sukrit Kalra的answer之外,他还使用了退出标志,如果你的程序在该代码块之后没有任何代码,你也可以使用sys.exit().
import sys a = 3 b = 4 c = 5 for a in range(3,500): for b in range(a+1,500): c = (a**2 + b**2)**0.5 if a + b + c == 1000: print a,c print a*b*c sys.exit() #stops the script
有关sys.exit的帮助:
>>> print sys.exit.__doc__ exit([status]) Exit the interpreter by raising SystemExit(status). If the status is omitted or None,it defaults to zero (i.e.,success). If the status is numeric,it will be used as the system exit status. If it is another kind of object,it will be printed and the system exit status will be one (i.e.,failure).