while循环仅在控件返回时才匹配条件,即完全执行for循环时.所以,这就是为什么你的程序即使满足条件也不会立即退出.

但是,如果a,b,c的任何值都没有满足条件,那么你的代码将以无限循环结束.

你应该在这里使用一个函数,因为return语句可以满足你的要求.

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)

除了@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, b, 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).