Re: Python Exponent Question
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
Python Exponent Question
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 -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Exponent Question
On Mon, 2007-12-10 at 10:15 -0800, databyss wrote: I have a simple program and the output isn't what I expect. Could somebody please explain why? [...] v**v**v**v = 2**2**2**2 = 65536 I would expect 2**2**2**2 to be 256 Exponentiation is right-associative. 2**2**2**2 = 2**(2**(2**2)) = 2**(2**4) = 2**16 = 65536. -- Carsten Haese http://informixdb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Exponent Question
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 -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Exponent Question
: 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 ... in an unparenthesized sequence of power and unary operators, the operators are evaluated from right to left ... - http://docs.python.org/ref/power.html So, 2**2**2**2 = 2**(2**(2**2)) = 65536 -[]z. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Exponent Question
databyss wrote: I would expect 2**2**2**2 to be 256 I stumbled upon it, too. 2**2**2**2 == 2**(2**(2**2)) == 2**16 == 65536 Christian -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Exponent Question
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 Exponentiation is right-associative. I.e. 2**2**2**2 == 2**(2**(2**2)) The reason is that left-associativity is better written with multiplication. (x**y)**z == x**(y*z) -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list