Đây là một chủ đề rất cũ, nhưng đây là một câu trả lời rất kỹ lưỡng và mã mẫu.
\r
là biểu diễn chuỗi của Vận chuyển trở lại từ bộ ký tự ASCII. Nó giống như bát phân 015
[ chr(0o15)
] hoặc hexidecimal 0d
[ chr(0x0d)
] hoặc thập phân 13
[ chr(13)
]. Xem man ascii
cho một đọc nhàm chán. Nó ( \r
) là một đại diện di động khá dễ dàng và đủ để mọi người đọc. Nó rất đơn giản có nghĩa là di chuyển cỗ xe trên máy đánh chữ suốt từ đầu trở lại mà không cần tiến bộ giấy. Đó là CR
một phần trong CRLF
đó có nghĩa là Vận chuyển trở lại và Nguồn cấp dữ liệu .
print()
là một hàm trong Python 3. Trong Python 2 (bất kỳ phiên bản nào bạn muốn sử dụng), print
có thể được buộc vào một hàm bằng cách nhập định nghĩa của nó từ __future__
mô-đun. Lợi ích của print
chức năng là bạn có thể chỉ định những gì sẽ in ở cuối, ghi đè hành vi mặc định của \n
việc in một dòng mới vào cuối mỗi print()
cuộc gọi.
sys.stdout.flush
yêu cầu Python tuôn ra đầu ra của đầu ra tiêu chuẩn , đó là nơi bạn gửi đầu ra print()
trừ khi bạn chỉ định khác. Bạn cũng có thể có hành vi tương tự bằng cách chạy với python -u
hoặc cài đặt biến môi trường PYTHONUNBUFFERED=1
, do đó bỏ qua import sys
và sys.stdout.flush()
gọi. Số tiền bạn có được bằng cách thực hiện gần như bằng 0 và không dễ gỡ lỗi nếu bạn quên một cách thuận tiện rằng bạn phải thực hiện bước đó trước khi ứng dụng của bạn hoạt động đúng.
Và một mẫu. Lưu ý rằng điều này chạy hoàn hảo trong Python 2 hoặc 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()