Ini adalah utas yang sangat lama, tetapi inilah jawaban yang sangat teliti dan kode sampel.
\radalah representasi string dari Carriage Return dari set karakter ASCII. Ini sama dengan oktal 015[ chr(0o15)] atau heksidimal 0d[ chr(0x0d)] atau desimal 13[ chr(13)]. Lihat man asciiuntuk membaca yang membosankan. Ini ( \r) adalah representasi yang cukup portabel dan cukup mudah bagi orang untuk membaca. Ini sangat sederhana artinya memindahkan carriage pada mesin tik sepanjang perjalanan kembali ke awal tanpa memajukan kertas. Itu CRbagian CRLFyang berarti Pengembalian Carriage dan Line Line .
print()adalah fungsi dalam Python 3. Dalam Python 2 (versi apa pun yang Anda tertarik untuk menggunakan), printdapat dipaksa menjadi fungsi dengan mengimpor definisi dari __future__modul. Manfaat dari printfungsi ini adalah Anda dapat menentukan apa yang akan dicetak pada akhirnya, mengesampingkan perilaku default \nuntuk mencetak baris baru di akhir setiap print()panggilan.
sys.stdout.flushmemberitahu Python untuk menyiram output dari output standar , yang merupakan tempat Anda mengirim output print()kecuali Anda menentukan sebaliknya. Anda juga bisa mendapatkan perilaku yang sama dengan berjalan dengan python -uatau mengatur variabel lingkungan PYTHONUNBUFFERED=1, sehingga melewatkan import sysdan sys.stdout.flush()panggilan. Jumlah yang Anda peroleh dengan melakukan hal itu hampir persis nol dan tidak terlalu mudah untuk di-debug jika Anda lupa bahwa Anda harus melakukan langkah itu sebelum aplikasi Anda berperilaku baik.
Dan sampel. Perhatikan bahwa ini berjalan dengan sempurna di Python 2 atau 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()