Попытка добавить предыдущий элемент в списке к следующему элементу, но продолжаю получать ноль - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть формула, которая использует предыдущий элемент, чтобы найти текущий элемент:

p(i) = 1 / (- 2 + p(i-1))

Код, который я должен найти:

p = []
po = 0
i = .01

while i < 1:
    po = (-1) / (-2 + po)
    p.append(po)
    i = i + .01

print p

Что я получаюэто:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Мое первое значение (если po изначально равно нулю) должно быть 1/2.

Есть идеи, почему я получаю только нули?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Как указал пользователь @blhsing в своем ответе, проблема заключается в разделении целых чисел: при делении целых чисел результат округляется в меньшую сторону для получения нового целого числа.

Путем преобразования одного из аргументовделение на float, деление также вернет float.Неважно, какое из 3 чисел вы измените на float, достаточно изменить одно из них, чтобы получить правильный результат:

  • изменить инициализацию с po = 0 на po = 0.0
  • или измените деление на po = (-1.0) / (-2 + po)
  • или измените деление на po = (-1) / (-2.0 + po)

Более того, я считаю, что вы используете iпеременная немного странно.Могу ли я предложить forloop, используя xrange()?

p = []
po = 0

# the '_' is used to say "I dont care about this value", so this
# runs the loop the specified amout of times
for _ in xrange(10):
    po = (-1.0) / (-2 + po)
    p.append(po)

print p
0 голосов
/ 14 февраля 2019

В Python 2 деление, включающее только целые числа, всегда приводит к целому числу, округленному вниз.Вместо этого вы должны использовать плавающее число для деления:

po = -1.0 / (-2 + po)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...