Este es un hilo muy antiguo, pero aquí hay una respuesta muy completa y un código de muestra.
\r
es la representación de cadena del retorno de carro del juego de caracteres ASCII. Es lo mismo que octal 015
[ chr(0o15)
] o hexadecimal 0d
[ chr(0x0d)
] o decimal 13
[ chr(13)
]. Ver man ascii
para una lectura aburrida. It ( \r
) es una representación bastante portátil y es lo suficientemente fácil de leer para las personas. Simplemente significa mover el carro en la máquina de escribir hasta el inicio sin avanzar el papel. Es la CR
parte de lo CRLF
que significa retorno de carro y avance de línea .
print()
es una función en Python 3. En Python 2 (cualquier versión que le interese usar), print
puede forzarse a una función importando su definición desde el __future__
módulo. El beneficio de la print
función es que puede especificar qué imprimir al final, anulando el comportamiento predeterminado de \n
imprimir una nueva línea al final de cada print()
llamada.
sys.stdout.flush
le dice a Python que vacíe la salida de la salida estándar , que es donde envía la salida a print()
menos que especifique lo contrario. También puede obtener el mismo comportamiento ejecutando python -u
o configurando la variable de entorno PYTHONUNBUFFERED=1
, omitiendo así las llamadas import sys
y sys.stdout.flush()
. La cantidad que gana al hacer eso es casi exactamente cero y no es muy fácil de depurar si olvida convenientemente que tiene que hacer ese paso antes de que su aplicación funcione correctamente.
Y una muestra. Tenga en cuenta que esto funciona perfectamente en Python 2 o 3.
from __future__ import print_function
import sys
import time
ANS = 42
FACTORS = {n for n in range(1, ANS + 1) if ANS % n == 0}
for i in range(1, ANS + 1):
if i in FACTORS:
print('\r{0:d}'.format(i), end='')
sys.stdout.flush()
time.sleep(ANS / 100.0)
else:
print()