Jamie Schwiderski Jamie Schwiderski - 1 year ago 84
Python Question

Calculating the sum of a series?

This is my assignment and for the life of me i cant seem to think of a way to do it. This is the code I have so far:

sum = 0
k = 1
while k <= 0.0001:
if k % 2 == 1:
sum = sum + 1.0/k
sum = sum - 1.0/k
k = k + 1

This is my assignment :

Create a python program named sumseries.py that does the following:
Put comments at the top of your program with your name, date, and
description of what the program does.

Write a program to calculate and display the sum of the series:

1 - 1/2 + 1/3 - 1/4 + ...

until a term is reached that is less than 0.0001.

The answer with 10,000 iterations appears to be 0.6930971830599583

I ran the program with 1,000,000,000 (billion) iterations and came up with a number of 0.6931471810606472. I need to create a loop to programmably create the series.

Answer Source

Actually, you could write this shorter:

Answer = sum(1.0 / k if k % 2 else -1.0 / k for k in range(1, 10001))

What this code does:

  • the innermost part is a generator expression, which computes the elements of a series 'on the fly'
    • 1.0 / k if k % 2 else -1.0 / k results in 1.0 / k if k is odd and -1.0 / k otherwise (a - b is the same as a + (-b))
    • for k in range(1, 10001) goes through all ks in range from 1 (included) to 10001 (excluded)
  • sum can compute the sum of any sequence (any iterable, to be precise), be it a list, a tuple, or a generator expression
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download