gpt4 book ai didi

python - 尝试使用 while 循环计算 sqroot 时出现代码问题

转载 作者:行者123 更新时间:2023-12-01 04:12:22 25 4
gpt4 key购买 nike

我正在尝试使用循环计算平方根。我不确定我的代码有什么问题,因为它无法识别正确的答案。

x = 25.0
ans = 0.0
while ans**2 <= x:
ans += 0.5
if ans**2 == x:
print ans
print ans**2

else:
print "no square root"
print ans
print ans**2

当我运行它时,它显示以下结果:

no square root
5.5
30.25

不,这不是家庭作业,我是 32 岁的生活学习者

编辑

谢谢大家的解答。我稍微修改了代码,更改了 while 循环和 if 语句,现在我的代码如下所示

x = 25.0
ans = 0.0
while ans**2 < x:
ans += 0.2



if ans**2 != x:
print "root not found"
print ans
print ans**2


else:
print "found square root"
print ans
print ans**2

当我尝试运行它时,它会打印以下内容

root not found
5.0
25.0

我很困惑

最佳答案

线路if ans**2==x:永远不会成立,因为之前的循环 while ans**2 <= x:已经增加 ans .

另请注意您最近的编辑:

二进制中的 0.2 或 1/5 是循环小数,没有精确的表示形式,因此您看到的是舍入的结果。在将 ans 增加 0.2 几次之后,尽管您非常接近它,但您并没有完全达到 5 ans**2不等于25。您需要在一定的精度范围内进行检查,例如:

precision = 0.0001
if math.fabs(ans**2 - x) <= precision:
"""then they are close enough for our purposes"""

顺便说一句,0.5 确实有二进制的精确表示(不重复),因此不会有精度错误,所以当您递增 0.5 时我没有费心提及它。

关于python - 尝试使用 while 循环计算 sqroot 时出现代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34754448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com