El misterio de la sangría de Python

¿Por qué me aparece el siguiente error? La última statement print no debe formar parte del bucle while.

 >>> while n>= 0: ... n = n-1 ... print(n) ... print ("TO A!!") File "", line 4 print ("TO A!!") ^ SyntaxError: invalid syntax 

Debe presionar enter después de su bucle while para salir del bucle

 >>> n = 3 >>> while n>=0: ... n = n-1 ... print (n) ... # Press enter here 2 1 0 -1 >>> print ("To A!!") To A!! 

Nota: – ... implica que todavía estás en el bloque while

El shell de python predeterminado funciona bien para escribir, pero realmente no entiende cómo pegar desde el portapapeles. La solución real es instalar ipython , que es un shell avanzado para python con muchas mejoras:

 % ipython3 Python 3.4.2 (default, Oct 8 2014, 13:08:17) Type "copyright", "credits" or "license" for more information. IPython 2.3.0 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: n = 5 In [2]: while n >= 0: ...: n = n-1 ...: print(n) ...: print ("TO A!!") ...: 4 3 2 1 0 -1 TO A!! In [3]: 

Supongo que el error aparece porque el shell de Python no lo admite. Quiere que hagas una cosa a la vez. Hago las mismas cosas en mi shell de python 2.7 y decía:

 File "", line 4 print 'to all' ^ IndentationError: unindent does not match any outer indentation level 

cuando hago lo mismo en mi shell de Python 3.4, dice: unexpected indent.