在while循环中重复赋值,Python

在while循环中重复赋值,Python,python,while-loop,Python,While Loop,请查看以下用Python编写的while循环代码: x=25 epsilon=0.01 high=max(1.0,x) low=0.0 *ans=(low+high)/2.0* while abs(ans**2-x)>=epsilon: if ans2>x: high=ans else: low=ans *ans = (high + low)/2.0* print("ans:",ans,) 这是一个猜测循环,它应该在0,01

请查看以下用Python编写的while循环代码:

x=25
epsilon=0.01 
high=max(1.0,x)
low=0.0
*ans=(low+high)/2.0*

while abs(ans**2-x)>=epsilon:
    if ans2>x:
        high=ans
    else:
        low=ans
   *ans = (high + low)/2.0*
print("ans:",ans,)
这是一个猜测循环,它应该在0,01的边距误差内找到正数的平方根的近似值。 但是我不明白为什么我们必须第二次定义ans=low+high/2.0,首先在循环之前,然后在循环中。有人能告诉我第二个定义有什么意义吗?因为我看到第一个定义已经足够了

谢谢
Arif

这是因为您需要在循环的每个迭代(包括第一次迭代)上执行该计算。因为while测试是循环的第一部分,所以需要在循环开始之前执行一次

这里有一种方法,只需一句话:

while True:
   *ans = (high + low)/2.0*
    if abs(ans**2-x)>=epsilon:
        break
    if ans2>x:
        high=ans
    else:
        low=ans

如果ans没有改变,即第二个定义,那么您将有一个无限while循环,所有变量保持不变。在if语句中使用ans2>x。这两个变量都不会改变,因此在每次通过while循环时都会产生相同的结果,即不会产生好的结果。