¿Por qué las declaraciones de impresión en python que contienen argumentos 'end =' se comportan de manera diferente en while-loops?
Estoy ejecutando Python versión 2.7.3 en MacOSX.
Considere este bloque de código:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x)
x += 1
time.sleep(1)
Si ejecuto este script, observo la salida que espero: los números0
mediante4
con un\n
Carácter añadido a cada número. Además, cada número se muestra después de una pausa de un segundo.
0
1
2
3
4
Ahora considera este bloque de código:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x, end='')
x += 1
time.sleep(1)
La salida es lo que espero.01234
sin el\n
's, pero elsincronización es inesperado En lugar de mostrar cada dígito después de una pausa de un segundo, el proceso espera cuatro segundos y luego muestra los cinco números.
Por queprint('string')
comportarse de manera diferente aprint('string', end='')
en while-loops? ¿Hay alguna forma de mostrar los caracteres sin nuevas líneas, un segundo a la vez? Lo intentésys.stdout.write(str(x))
, pero se comporta de la misma manera queprint(end='')
.