Bu çok eski bir iş parçacığı, ama işte çok kapsamlı bir cevap ve örnek kod.
\rASCII karakter kümesinden Satır Başı dize temsilidir . Sekizli 015[ chr(0o15)] veya onaltılık 0d[ chr(0x0d)] veya ondalık 13[ chr(13)] ile aynıdır . man asciiSıkıcı bir okuma için bakın . O ( \r) oldukça portatif temsilidir ve insanlar için kolay okunur yeterlidir. Çok basit bir şekilde, daktilodaki taşıyıcının kağıdı ilerletmeden başlangıcına kadar geri getirmesi anlamına gelir. Bu bir CRparçasıCRLF Satır Başı ve Satır Besleme anlamına .
print()Python 3'te (Python 2'de (kullanmak istediğiniz herhangi bir sürüm), printtanımını __future__modülden içe aktararak bir işleve zorlanabilir . Bu printişlevin yararı , sonunda ne yazdıracağınızı belirleyebilmenizdir \nve her print()çağrının sonunda bir yeni satır yazdırmanın varsayılan davranışını geçersiz kılar .
sys.stdout.flushPython'a, aksi belirtilmedikçe çıktı gönderdiğiniz standart çıktı çıktısını temizlemesini söyler print(). Aynı davranışı, python -uortam değişkeni ile çalışarak veya ayarlayarak PYTHONUNBUFFERED=1, böylece import sysve sys.stdout.flush()çağrılarını atlayarak da alabilirsiniz . Bunu yaparak elde ettiğiniz miktar neredeyse sıfırdır ve uygulamanızın düzgün davranmadan önce bu adımı yapmanız gerektiğini unutursanız hata ayıklamak çok kolay değildir.
Ve bir örnek. Bunun Python 2 veya 3'te mükemmel çalıştığını unutmayın.
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()