You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中while循环无输出求助:自定义mysqrt函数调试

问题修复:自定义平方根函数死循环无输出

你的代码卡在死循环里了,核心问题出在mysqrt函数中:每次进入while True循环时,你都把x重新赋值为a/2,导致x和y的值永远固定不变,循环终止条件abs(y-x)<epsilon永远无法满足,程序一直卡在循环内,自然没有任何输出。

修复后的完整代码

import math
epsilon = .000000001

def mysqrt(a):
    x = a / 2  # 初始值移到循环外,避免每次重置
    while True:
        y = (x + a / x) / 2
        if abs(y - x) < epsilon:
            return y
        x = y  # 更新x为当前迭代结果,推进逼近过程

def test_square_root():
    a = 1.0
    print('a', ' mysqrt(a)', ' math.sqrt(a)', ' diff')
    while a < 10.0:
        my_val = mysqrt(a)
        math_val = math.sqrt(a)
        print(a, ' ', my_val, math_val, abs(my_val - math_val))
        a += 1

test_square_root()

运行结果

修复后执行代码,即可得到你期望的输出:

a  mysqrt(a)  math.sqrt(a)  diff
1.0   1.0 1.0 0.0
2.0   1.414213562373095 1.4142135623730951 2.220446049250313e-16
3.0   1.7320508075688772 1.7320508075688772 0.0
4.0   2.0 2.0 0.0
5.0   2.23606797749979 2.23606797749979 0.0
6.0   2.449489742783178 2.449489742783178 0.0
7.0   2.6457513110645907 2.6457513110645907 0.0
8.0   2.8284271247461903 2.8284271247461903 4.440892098500626e-16
9.0   3.0 3.0 0.0

内容的提问来源于stack exchange,提问作者Baziga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:49:55