Ini adalah utas yang sangat lama, tetapi inilah jawaban yang sangat teliti dan kode sampel.
\r
adalah 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 ascii
untuk 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 CR
bagian CRLF
yang berarti Pengembalian Carriage dan Line Line .
print()
adalah fungsi dalam Python 3. Dalam Python 2 (versi apa pun yang Anda tertarik untuk menggunakan), print
dapat dipaksa menjadi fungsi dengan mengimpor definisi dari __future__
modul. Manfaat dari print
fungsi ini adalah Anda dapat menentukan apa yang akan dicetak pada akhirnya, mengesampingkan perilaku default \n
untuk mencetak baris baru di akhir setiap print()
panggilan.
sys.stdout.flush
memberitahu 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 -u
atau mengatur variabel lingkungan PYTHONUNBUFFERED=1
, sehingga melewatkan import sys
dan 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()