Python Exponent Question

Tim Chase python.list at tim.thechases.com
Mon Dec 10 13:28:43 EST 2007


databyss 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

Order of operations and proximity:

 >>> 2**(2**(2**2))
65536
 >>> ((2**2)**2)**2
256

Apparently Python assumes the former and you assume the latter. 
When in doubt about order of operations, use parens.  And even 
when you *know* the order of operations, be kind to those who 
will have to read your code later and put in the parens anyways.

-tkc






More information about the Python-list mailing list