Tôi đang chạy phiên bản python 2.7.3 trên MacOSX.Tại sao các lệnh in python chứa các đối số 'end =' hoạt động khác nhau trong các vòng lặp while?
Xem xét khối mã này:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x)
x += 1
time.sleep(1)
Nếu tôi chạy kịch bản này, tôi quan sát đầu ra tôi mong đợi: Những con số 0
qua 4
với một nhân vật \n
nối vào mỗi số. Hơn nữa, mỗi số hiển thị sau một giây tạm dừng.
0
1
2
3
4
Bây giờ xem xét khối mã này:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x, end='')
x += 1
time.sleep(1)
Kết quả là những gì tôi mong đợi, mà không
\n
's, nhưng thời gian là bất ngờ. Thay vì hiển thị từng chữ số sau một giây tạm dừng, quá trình chờ bốn giây, sau đó hiển thị tất cả năm số.
Tại sao print('string')
hoạt động khác với print('string', end='')
trong các vòng lặp while? Có cách nào để hiển thị các ký tự không có dòng mới, một giây tại một thời điểm không? Tôi đã thử sys.stdout.write(str(x))
, nhưng nó hoạt động theo cùng một cách như print(end='')
.
Trên python 3.5 'print (x, end = '', flush = True)' sẽ aso hoạt động – evan54