Bu çok eski bir iş parçacığı, ama işte çok kapsamlı bir cevap ve örnek kod.
\r
ASCII 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 ascii
Sı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 CR
parç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), print
tanımını __future__
modülden içe aktararak bir işleve zorlanabilir . Bu print
işlevin yararı , sonunda ne yazdıracağınızı belirleyebilmenizdir \n
ve her print()
çağrının sonunda bir yeni satır yazdırmanın varsayılan davranışını geçersiz kılar .
sys.stdout.flush
Python'a, aksi belirtilmedikçe çıktı gönderdiğiniz standart çıktı çıktısını temizlemesini söyler print()
. Aynı davranışı, python -u
ortam değişkeni ile çalışarak veya ayarlayarak PYTHONUNBUFFERED=1
, böylece import sys
ve 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()