Jamie Schwiderski - 1 year ago 53

Python Question

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

else:

sum = sum - 1.0/k

k = k + 1

print()

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))
```

- 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`k`

s 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