Бесконечные циклы с python - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь решить бесконечное l oop до 15-го объекта серии x и y, где значения y вычитаются, а значения x добавляются к исходному уравнению pi (который вложен в for l oop)

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, что не близко к моему ожидаемому значению. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

В коде есть несколько ошибок:

  • x и y всегда назначаются как конечное значение циклов, т.е. x=4/(16*17*18)=0.0008169934640522876 и y=4/(18*19*20)=0.0005847953216374269, таким образом, pi всегда 3.000232198142415.
  • В for-l oop присвоение значений повторяемой переменной i в конце итерации бессмысленно, потому что i присваивается значение из range генератор в начале каждой новой итерации.
  • Переменные i из внешнего и внутреннего циклов мешают друг другу.
0 голосов
/ 27 мая 2020

Ошибка заключается в x = (4 / (i * (i+1) * (i+2)))

Измените его на x += (4 / (i * (i+1) * (i+2))) Или - =, * =, / = каким бы ни был ваш алгоритм ... Повторите то же самое для y

Проблема в том, что вы используете x = это перезаписывает значение x, и вы продолжаете получать то же значение x и y, следовательно, тот же результат ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...