Sto eseguendo Python versione 2.7.3 su MacOSX.Perché le istruzioni di stampa python che contengono gli argomenti 'end =' si comportano diversamente nei cicli while?
Considerate questo blocco di codice:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x)
x += 1
time.sleep(1)
Se si esegue questo script, osservo l'uscita mi aspetto: I numeri 0
attraverso 4
con un carattere \n
aggiunto a ciascun numero. Inoltre, ogni numero viene visualizzato dopo una pausa di un secondo.
0
1
2
3
4
Ora considerano questo blocco di codice:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x, end='')
x += 1
time.sleep(1)
L'uscita è quello che mi aspetto, senza i 's
\n
, ma la tempistica è inaspettato. Invece di visualizzare ogni cifra dopo una pausa di un secondo, il processo attende quattro secondi, quindi visualizza tutti e cinque i numeri.
Perché il comportamento print('string')
si comporta diversamente da print('string', end='')
in loop while? C'è un modo per visualizzare i personaggi senza newline, un secondo alla volta? Ho provato sys.stdout.write(str(x))
, ma si comporta allo stesso modo di print(end='')
.
Su python 3.5 'print (x, end = '', flush = True)' funzionerà ugualmente – evan54