Sagar Shankar wrote:
Hi, this is my first question to this group. I'm a beginner to computer
science and programming in Python. Am currently using John Zelle's book -
Python Programming: An introduction to computer science to teach myself.

Hi Sagar, and welcome.

Can I ask you to please post code using plain text rather than HTML email (also known as "rich text"), as HTML email messes up the formatting? In this case, I can reverse-engineer the correct formatting, so no harm done other than a waste of time, but that won't always be so easy.


In the book, there is an exercise to create a program that approximates the
value of Pi by using the series [image: image.png]

Now, the only way I've been able to figure out how to do this is by creating
pairs of 4/x - 4/x+2 and calculating the series. The problem is that the
exercise asks to prompt the user for the number of terms to sum, and then
output the sum. So if an user inputs just 1, then his answer should be 4/1,
whereas in my version it will 4/1-4/3

The series looks like:

4/1 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 +- ...

Three things stand out:

(1) The *numerator* of each term is always 4.

(2) The *denominator* of the terms are 1, 3, 5, ... or to put it another way, the term in position i has denominator 2*i+1 (starting with i=0).

(3) The *sign* of the terms are +1, -1, +1, -1, +1, ... If you remember your high school maths, (-1)**0 = +1, (-1)**1 = -1, (-1)**2 = +1, etc. So the term in position i has denominator (-1)**i.

Putting those three things together, the term in position i (starting with i=0) has value 4.0*(-1)**i/(2*i+1).

Does that help?


One other thing:

import math
seed = input("Please enter the number of pairs to calculate: ")

In Python 2, you shouldn't use input() for user input. It was a design mistake, which has now been fixed in Python 3, but in Python 2 you should use raw_input() instead.

The problem with input() is that it takes the user's input and *executes it as code*, which could have all sorts of bad side-effects starting with errors and just getting worse:

>>> name = input("What is your name? ")
What is your name? Steven
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<string>", line 0, in ?
NameError: name 'Steven' is not defined

Instead, you should say this:


seed = int(raw_input("How many terms would you like? "))



--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to