In article 
<[EMAIL PROTECTED]>,
 databyss <[EMAIL PROTECTED]> wrote:

> I have a simple program and the output isn't what I expect.  Could
> somebody please explain why?
> 
> Here's the code:
> 
> #simple program
> print "v = 2"
> v = 2
> print "v**v = 2**2 =", v**v
> print "v**v**v = 2**2**2 =", v**v**v
> print "v**v**v**v = 2**2**2**2 =", v**v**v**v
> #end program
> 
> Here's the output:
> 
> >>>
> v = 2
> v**v = 2**2 = 4
> v**v**v = 2**2**2 = 16
> v**v**v**v = 2**2**2**2 = 65536
> >>>
> 
> I would expect 2**2**2**2 to be 256

Python's ** operator associates to the right, not to the left; thus, 

  2 ** 2 ** 2 ** 2

... really means

  2 ** (2 ** (2 ** 2))

... and not

  ((2 ** 2) ** 2) ** 2

... as you seem to expect.  As usual, you can enforce different 
associations by explicitly including the parentheses.

Cheers,
-M

-- 
Michael J. Fromberger             | Lecturer, Dept. of Computer Science
http://www.dartmouth.edu/~sting/  | Dartmouth College, Hanover, NH, USA
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to