Использование цикла For для нахождения выражения последовательности [1/1 + 1/2 + 1/3 ... 1/1000] - PullRequest
0 голосов
/ 25 ноября 2018

Мне нужна помощь для выполнения задания.Мне нужно использовать python, чтобы выяснить, как создать цикл «для цикла», который будет делать следующее:

Series 1/1+1/2+1/3+1/4+...+1/1000 (which is expressed as 1000. ∑ n=1. 1 n ≈. 7.49)

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

998 7.483469855949342

999 7.48447086055343

1000 7.485470860550343

Основное, что я сейчас получил, это

for x in range(1, 1000):

Я не знаю почему, но я просто пытался заставить это уравнение работать в моей голове.Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Имейте в виду, что python2 вернет 0 для 1 / x, а ваша сумма приведет к 1 в конце.Для получения числа с плавающей запятой (то есть 0,25 для 1/4) одно из чисел должно быть преобразовано в число с плавающей запятой (либо 1, либо либо x).Следовательно, правильный путь будет

sum = 0
for x in range(1, 1001):
    sum += (float(1)/x)
    print(sum, x)
0 голосов
/ 25 ноября 2018

itertools - ваш лучший друг.Предложенные ответы верны, но для больших данных будут медленными.На вашем месте я бы сделал:

import itertools

a = map(lambda x:1/x,range(1,1001))

#print(list(itertools.accumulate(a)))

for i, j in enumerate(1,itertools.accumulate(a)):
    print(i,j)

Объяснение: lambda x: 1 / x создает функцию «на лету», которая преобразует n в 1 / n.сопоставьте карты, которые функционируют, с диапазоном значений, начиная с 1 до 1000. Затем я передаю его накапливающемуся 1/1 + 1/2 .....;)

0 голосов
/ 25 ноября 2018

Вы идете в правильном направлении.Перед циклом for вам потребуется переменная суммы, в которой вы будете хранить значение суммирования 1/x.

. Вы можете сделать это аналогичным образом:

sum = 0
for x in range(1, 1001):
    sum += (1/x)
    print(sum, x)

Здесь я инициализировал переменную sum равной 0. После этого я перебираю x по значениям [1, 1000] (включая оба).Я нахожу 1/x и добавляю его к сумме.Далее я печатаю значения, как вы хотели.

ПРИМЕЧАНИЕ: range(x, y) метод дает вам диапазон от x до y-1

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