python的无限循环
我试图求解一个无限循环,直到x和y系列的第15个对象,其中y值被减去,x值被添加到原始方程中,该方程嵌套在for循环中python的无限循环,python,loops,Python,Loops,我试图求解一个无限循环,直到x和y系列的第15个对象,其中y值被减去,x值被添加到原始方程中,该方程嵌套在for循环中 from decimal import Decimal i = 2 x = 0 y = 0 pi = 0 #write formular for sequence for i in range(17): for i in range(2, 17, 2): x = (4 / (i * (i+1) * (i+2))) for i in range
from decimal import Decimal
i = 2
x = 0
y = 0
pi = 0
#write formular for sequence
for i in range(17):
for i in range(2, 17, 2):
x = (4 / (i * (i+1) * (i+2)))
for i in range (4, 17, 2):
y = (4 / ((i+2) * (i+3) * (i+4)))
pi = 3 + x - y
i += 4
print(pi)
我希望每次迭代都有不同的pi值,但15次迭代中的每一次,我都会得到相同的答案。3.000232198142415,不接近我的预期值。我做错了什么?错误在于
x=4/i*i+1*i+2
换成
x+=4/i*i+1*i+2
或者-=,*=,/=你的算法是什么。。。
对y重复相同的步骤
问题是因为您正在使用x=这将覆盖x值,并且您将继续获得相同的x和y值,因此结果相同
代码中有几个错误: x和y始终指定为循环的最终值,即x=4/16*17*18=0.0008169934640522876和y=4/18*19*20=0.0005847953216374269,因此pi始终为3.000232198142415。 在for循环中,在迭代结束时将值分配给迭代变量i是没有意义的,因为在每个新迭代开始时,范围生成器会将值分配给i。 来自外部和内部循环的i变量相互干扰。
您的示例中没有无限循环。你是什么意思?你对内部for循环重复使用i,外部循环的值从不使用,x和y的值被覆盖,只使用各自内部循环的最后一个值,i+=4是无用的,因为我在新的迭代开始时被覆盖。你在for循环中说,在迭代结束时为迭代变量i赋值是没有意义的,因为在每次新迭代开始时,范围生成器会为i赋值。对于所有for循环,这是真的吗?@Nnaobi对于所有for循环,每次迭代中迭代变量的值都在for语句中定义,通常不应在迭代中更改。我提到了范围生成器,因为这是您在for语句中定义I的方式。如果您想手动迭代变量,while循环可能是更好的选择。