Ошибка в коде. Помогите найти!

Помогите, пожалуйста, вот код:

x = int(input('Введите число: '))
sum_res = 1
start = 1
for number in range(start, 64, start * 2 + 1):
  res = (x - number)
  sum_res = sum_res * res
print(sum_res)

Нужен результат по формуле: res = (x - 1) * (x - 3) * (x - 7) * (x - 15)...... (x - 63)

В чем я ошибся?


Ответы (1 шт):

Автор решения: Dmitry

Коли нет обратной связи от ТС, брошу здесь это

Формирование членов ряда у вас не верно. Вы получаете не то, что указано в формуле. Мои предположения по этому поводу в виде кода

lst_ = []
start = 1
while True:
    lst_.append(start)
    start = start * 2 + 1
    if start > 64:
        break

Можно это написать короче.

Далее сам подсчет

sum_res = 1
for item in lst_:
    sum_res *= (x - item)

При x равному одному из членов lst_ результат будет превращаться в ноль. Крайние случаи, которые должны быть учтены

→ Ссылка