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