Por que as instruções de impressão em python que contêm argumentos 'end =' se comportam de maneira diferente em while-loops?
Estou executando o python versão 2.7.3 no MacOSX.
Considere este bloco de código:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x)
x += 1
time.sleep(1)
Se eu executar este script, observo a saída esperada: os números0
através4
com um\n
personagem acrescentado a cada número. Além disso, cada número é exibido após uma pausa de um segundo.
0
1
2
3
4
Agora considere este bloco de código:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x, end='')
x += 1
time.sleep(1)
A saída é o que eu espero,01234
sem o\n
é, mas ocronometragem é inesperado. Em vez de exibir cada dígito após uma pausa de um segundo, o processo aguarda quatro segundos e exibe todos os cinco números.
Porqueprint('string')
se comportar de maneira diferenteprint('string', end='')
em while-loops? Existe alguma maneira de exibir os personagens sem novas linhas, um segundo de cada vez? eu tenteisys.stdout.write(str(x))
, mas se comporta da mesma maneira queprint(end='')
.