Dies ist ein sehr alter Thread, aber hier ist eine sehr gründliche Antwort und ein Beispielcode.
\r
ist die Zeichenfolgendarstellung von Carriage Return aus dem ASCII-Zeichensatz. Es ist dasselbe wie oktal 015
[ chr(0o15)
] oder hexadezimal 0d
[ chr(0x0d)
] oder dezimal 13
[ chr(13)
]. Siehe man ascii
für eine langweilige Lektüre. Es ( \r
) ist eine ziemlich tragbare Darstellung und für die Leute leicht zu lesen. Es bedeutet ganz einfach, den Wagen auf der Schreibmaschine ganz zum Start zurückzubewegen, ohne das Papier vorzuschieben. Es ist der CR
Teil von CRLF
dem bedeutet Carriage Return und Line Feed .
print()
ist eine Funktion in Python 3. In Python 2 (jede Version, die Sie verwenden möchten) print
kann sie durch Importieren ihrer Definition aus dem __future__
Modul in eine Funktion gezwungen werden. Der Vorteil der print
Funktion besteht darin, dass Sie angeben können, was am Ende gedruckt werden soll, und das Standardverhalten \n
zum Drucken einer neuen Zeile am Ende jedes print()
Aufrufs überschreiben .
sys.stdout.flush
Weist Python an, die Ausgabe der Standardausgabe zu leeren , mit der Sie die Ausgabe senden, print()
sofern Sie nichts anderes angeben. Sie können das gleiche Verhalten auch erzielen, python -u
indem Sie die Umgebungsvariable ausführen oder PYTHONUNBUFFERED=1
festlegen import sys
und dabei die sys.stdout.flush()
Aufrufe und überspringen . Der Betrag, den Sie dadurch gewinnen, ist fast genau Null und nicht sehr einfach zu debuggen, wenn Sie bequemerweise vergessen, dass Sie diesen Schritt ausführen müssen, bevor sich Ihre Anwendung ordnungsgemäß verhält.
Und eine Probe. Beachten Sie, dass dies in Python 2 oder 3 perfekt läuft.
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()