Python关于不动点迭代法相关问题

这是原题
用不动点迭代法求f(x)=e^x+x-2=0在[0,1]内的近似根,要求误差小于10-6.
这是代码部分
 from math import exp
   xl = 0  #区间下限
   xu = 1  #区间上限
   x = (xl+xu)/2  #迭代初始值
   x_list = [x]
   i = 0

 while True:
x = exp(x) + x - 2 + x
x_list.append(x)
if len(x_list) > 1:
    i += 1
    error = abs((x_list[-1] - x_list[-2]) / x_list[-1])
    if error < 10**(-6):
        print(f'迭代第{i}次后,误差小于10^-6')
        break
else:
    pass
这是他的报错
 OverflowError: math range error

也就是溢出,数学范围错误

代码部分我是参考的Fo*(Bi)的
 https://blog.csdn.net/weixin_48615832/article/details/109470488
不知该如何解决

以下为我修改后成功运行的代码

from math import exp,log
xl = 0  #区间下限
xu = 1  #区间上限
x = (xl+xu)/2  #迭代初始值
x_list = [x]
i = 0

while True:
    x = log(2-x)
    x_list.append(x)
    if len(x_list) > 1:
        i += 1
        error = abs((x_list[-1] - x_list[-2]) / x_list[-1])
        if error < 10**(-6):
            print(f'迭代第{i}次后,误差小于10^-6')
            break
    else:
        pass
print(f'所求方程式的根为{x_list[-1]}') 

是不是这样哦,你越算越大,发散不收敛

from math import exp 

xl = 0  #区间下限
xu = 1  #区间上限
x = (xl+xu)/2  #迭代初始值
y = x
i = 0

while True:
    x = exp(x) + x - 2 
    i += 1
    error = abs((x - y) / x)
    y = x
    if error < 10**(-6):
        print(f'迭代第{i}次后,误差小于10^-6')
        break