Help me with this code

Steven D'Aprano steve+comp.lang.python at pearwood.info
Wed Nov 6 03:42:51 CET 2013


On Tue, 05 Nov 2013 17:51:00 -0800, chovdary wrote:

> Hi friends
> 
> help me with the following code. Im able to execute the code but getting
> wrong output
[snip code]

You have this critical expression in your code:

result  +=  ((-1) ** (k+1))/2*k-1


It looks to me like you are using Python 2. Unfortunately, Python 2 had a 
design flaw that wasn't corrected until Python 3, where division is the 
integer division operator:

1/2 => 0 rather than 0.5.

There are three ways to fix this:

1) convert one of the numbers to a float:

   result  +=  float((-1) ** (k+1))/2*k-1


will probably do the trick. Although I'm not sure if the denominator is 
meant to be just 2, as you have above, or (2*k-1).


2) Put "from __future__ import division" as the very first line of your 
program. It must appear before any other code.

3) Avoid floating point numbers and use actual fractions, which will give 
you exact values instead of approximate. At the beginning of your code, 
put

from fractions import Fraction

and then change the code to look something like this:

    result  +=  Fraction((-1) ** (k+1))/Fraction(2*k-1)




-- 
Steven



More information about the Python-list mailing list