Python 为什么';它不显示结果,但不显示错误

Python 为什么';它不显示结果,但不显示错误,python,python-3.7,Python,Python 3.7,我已经编写了一个代码来获取函数的根。但是它没有显示任何结果。也没有显示任何错误: import math from math import e #finding root of f(x)=(e**-x)-x: #f'(x)=(-e**-x)-1 #y=x-(f(x)/f'(x)) def f(x): x=0 y=x-(((e**-x)-x)/((-e**-x)-1)) z=((y-x)/y)*100 while z<(10**-8): pri

我已经编写了一个代码来获取函数的根。但是它没有显示任何结果。也没有显示任何错误:

import math
from math import e
#finding root of f(x)=(e**-x)-x:
#f'(x)=(-e**-x)-1
#y=x-(f(x)/f'(x))
def f(x):
    x=0
    y=x-(((e**-x)-x)/((-e**-x)-1))
    z=((y-x)/y)*100
    while z<(10**-8):
        print(f"The root is {y}")
        x=y
    
导入数学
从数学导入e
#求f(x)=(e**-x)-x的根:
#f'(x)=(-e**-x)-1
#y=x-(f(x)/f'(x))
def f(x):
x=0
y=x-((e**-x)-x/(-e**-x)-1))
z=((y-x)/y)*100

而z则
z
的初始值为100

因此,它不会满足
z<(10**-8)
,也不会在
循环时进入

然而,我们可以使用递归找到所需的值:
x=0.5671432904
,当我们试图找到时,我们需要设置一个最大迭代值,否则过程将以错误结束

此外,由于我们将使用递归,我们不再需要while循环,而是可以使用if语句进行检查

以下是我的解决方案:

from math import e
# desired output: x=0.5671432904
max_iter = 950
count = 0
result = -1


def f(x):
    global count, result
    count += 1
    if count < max_iter:
        y = x-(((e**-x)-x)/((-e**-x)-1))
        z = ((y-x)/y)*100
        if z < (10**8):
            x = y
            result = x
            f(x)


f(0)
print("The root is {:.10f}".format(result))
从数学导入e
def():
x=0
y=x-((e**-x)-x/(-e**-x)-1))
z=((y-x)/y)*100
打印(z)
而z<(10**-8):
打印(“根为{}”。格式(y))
x=y
f()
Z的输出为100


它大于(10**-8),所以当循环不起作用时

你真的调用了
f
?我删除了x=0,然后调用了f(x=0),它仍然没有显示结果。我甚至删除了函数并运行了它,但它仍然没有显示任何结果。您是否至少验证了一次
while
循环的条件为真?我只运行了没有函数的循环。它没有显示任何结果。如何验证它?例如,通过打印z?您应该阅读以下内容:
The root is 0.5671432904
from math import e


def f():
    x = 0
    y = x-(((e**-x)-x)/((-e**-x)-1))
    z = ((y-x)/y)*100
    print(z)
    while z < (10**-8):
        print("The root is {}".format(y))
        x = y

f()