On 03/31/2013 02:56 AM, morphex wrote:
Hi.
I was just doodling around with the python interpreter today, and here is the
dump from the terminal:
morphex@laptop:~$ python
Python 2.7.3 (default, Sep 26 2012, 21:53:58)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
1**2
1
1**2**3
1
1**2**3**4
1L
1**2**3**4**5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
Does anyone know why this raises a MemoryError? Doesn't make sense to me.
Perhaps you didn't realize that the expression will be done from right
to left. So first it calculates 4**5 which is 1024
Then it calculates 3**1024, which has 488 digits. then it calculates 2
to that power, which is a number large enough to boggle the mind. That
number's storage needs makes a few gigabytes seem like a molecule in the
ocean.
Anyway, it never gets around to doing the 1** part.
On the other hand, perhaps you wanted to do a different calculation:
>>> ((((1**2)**3)**4)**5)
1
--
DaveA
--
http://mail.python.org/mailman/listinfo/python-list