Це дуже стара тема, але ось дуже ґрунтовна відповідь та зразок коду.
\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()