The while
loop will match the condition only when the control returns back to it, i.e when the for
loops are executed completely. So, that’s why your program doesn’t exits immediately even though the condition was met.
But, in case the condition was not met for any values of a
,b
,c
then your code will end up in an infinite loop.
You should use a function here as the return
statement will do what you’re asking for.
def func(a,b,c): 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 return # causes your function to exit, and return a value to caller func(3,4,5)
Apart from @Sukrit Kalra’s answer, where he used exit flags you can also use sys.exit()
if your program doesn’t have any code after that code block.
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, b, c print a*b*c sys.exit() #stops the script
help on 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).