In article
<29**********************************@r60g2000hsc. googlegroups.com>,
databyss <da******@gmail.comwrote:
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