这是一个使用牛顿方法求解给定数字的平方根的函数:
def sqrt(n):
approx = n / 2.0
while True:
better = (approx + n / approx) / 2.0
if abs(approx - better) < 0.00001:
return better
approx = better
我不明白的是,该函数只返回“better”,这是一个整数,但while循环依赖于一个布尔值,那么while循环如何停止?函数返回False以终止while循环?
非常感谢提前。
答案 0 :(得分:4)
实际上,它永远不会“返回False
来终止while循环”,因为它根本不需要。
当Python在函数内部命中return-statement时,它会立即退出该函数。意思是,当达到return better
时,退出sqrt
,并且在此过程中,while循环也是如此。
答案 1 :(得分:2)
你提到的布尔值True
是循环重复的条件。在此代码中,循环始终重复,因为循环条件始终为True。循环条件不依赖于返回值。当达到return
语句时,即使return
语句在循环或if语句中,函数也会立即停止并返回该值。
答案 2 :(得分:0)
那么while循环怎么会停止?
当函数返回时它将停止。函数return
将控件传递给调用者,从而不由自主地断开并终止循环。
函数返回False以终止while循环?
它不需要。假设,该函数计算非负实数的平方根,保证函数返回。从而产生循环终止
但是while循环依赖于布尔
示例循环是无限循环的典型示例。无限循环保证永远运行,直到外部场景强制退出循环。明确的条件可以是
答案 3 :(得分:0)
当python在函数中“返回...”时,无论你有多少循环,函数都会停止,返回值,并继续使用其余的代码。
函数返回False以终止while循环?
如果你真的想在没有“退出”函数的情况下终止while循环,你可以使用语句break
。
def bla():
a = 1;
while True:
...
...
if blichlach = 18273182736127836:
break
...
a = 2
这个简单的函数,将1分配给a,然后进入无限循环,因为True将永远为真。
然后,当blichlach
命中18273182736127836时,循环将停止 - 然后函数将在'while'之后继续,这意味着它将2分配给'a'。
def bla():
a = 1;
while True:
...
...
if blichlach = 18273182736127836:
return 1;
...
a = 2
在这一个中,当blichlach在while循环中命中18273182736127836时,该函数将返回主代码或调用它的函数。 'a'永远不会是2。