Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python的无限循环_Python_Loops - Fatal编程技术网

python的无限循环

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

我试图求解一个无限循环,直到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 (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循环可能是更好的选择。