Це дуже стара тема, але ось дуже ґрунтовна відповідь та зразок коду.
\r
- це рядкове подання повернення перевезення з набору символів ASCII. Це те саме, що вісімковий 015
[ chr(0o15)
] або шістнадцятковий 0d
[ chr(0x0d)
] або десятковий 13
[ chr(13)
]. Дивіться man ascii
для нудного читання. Це ( \r
) є досить портативним зображенням і досить легко читати людей. Це дуже просто означає перенести коляску на машинці повністю до початку, не просуваючи папір. Це CR
частина, CRLF
яка означає повернення вантажу та подачу лінії .
print()
- це функція в Python 3. У Python 2 (будь-яка версія, яку ви хочете використати), print
можна примусити її до функції, імпортуючи її визначення з __future__
модуля. Перевага print
функції полягає в тому, що ви можете вказати, що слід надрукувати наприкінці, переосмисливши поведінку за замовчуванням \n
для друку нового рядка в кінці кожного print()
дзвінка.
sys.stdout.flush
вказує Python вимикати вихідний стандартний вихід , куди ви надсилаєте вихід, print()
якщо не вказано інше. Ви також можете отримати таку саму поведінку, запустивши python -u
або встановивши змінну оточуючого середовища PYTHONUNBUFFERED=1
, тим самим пропустивши import sys
та sys.stdout.flush()
виклики. Сума, яку ви отримуєте, роблячи це, майже рівно дорівнює нулю, і не дуже легко відладкувати, якщо зручно забути, що вам потрібно зробити цей крок, перш ніж ваша програма поводиться належним чином.
І зразок. Зауважте, що це ідеально працює в Python 2 або 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()