python - while block 没有按预期循环

标签 python loops

def fvals_sqrt(x):
    """
    Return f(x) and f'(x) for applying Newton to find a square root.
    """
    f = x**2 - 4.
    fp = 2.*x
    return f, fp

def solve(fvals_sqrt, x0, debug_solve = False):
    """
    Solves the sqrt function, using newtons methon.
    """
    iters = 0
    f, fp = 0.
    while  f > 10**-14 | -f < 10**-14:
        f, fp = fvals_sqrt(x0)
        x0 = x0 - (f/fp)
        iters = iters+1
        print  + " x = %22.15e in %i iterations " % (x0, iters)
        return x0, iters

    print "we're done"

我想要这个 while 循环 once f once 小于 10^-14,但我不确定如何修改参数以使循环可迭代,有帮助吗?

最佳答案

你想要逻辑or而不是|:

while  f > 10**-14 or -f < 10**-14:

请注意,逻辑或 (or) 和按位或 (|) 之间的运算符优先级有所不同。您之前的声明可能被解析为:

while (f > (10**-14 | -f)) < 10**-14):

这似乎会引发 TypeError...

这样写可能更容易:

while abs(f) > 10**-14:

关于python - while block 没有按预期循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328523/

相关文章:

python - 使用 python 和 bs4 进行网页抓取

c++ - 循环复制是否比 memcpy() 效率低?

java - Android:如何检索解析的值

matlab - 有没有办法执行一段时间?

python - 维基百科消歧错误

python - PyQt 对话框 - 如何让它在按下按钮后退出?

python - 将 pandas freq 字符串转换为 timedelta

java - 来自对象的字符串列表

c++ - 当char数组被过度填充时,为什么我的程序会陷入无限循环?

python - 如何在 Tkinter 的一个按钮中拥有图像 + 文本