Python'da \ r tüm satırı silmez
Oldukça karmaşık bir problemim var, ama işte "en basit versiyon", böylece onu daha iyi anlayabilirsiniz.
import time
for i in range(10):
time.sleep(1)
print('{}\r'.format(i), end="")
ve burada her şey yolunda gidiyor, sorun geri sayım yapmaya çalıştığımda geliyor
import time
for i in range(10):
time.sleep(1)
print('{}\r'.format(10-i), end="")
çıktı 10 ... sonra 90 ... 80 ... 70 ve böyle devam ediyor, 10'un ikinci şifresi iptal edilmemiş gibi görünüyor. Birisi bana nedenini söyleyebilir mi?
Yanıtlar
\rimleci satırın başına götürür, ancak siz üzerine yazmadıkça zaten yazdırılmış olan herhangi bir şeyi "temizlemiyor" (bu, platforma bağlı olabilir). Böylece 0karakter görünür kalacaktır. Her zaman "sabit genişlikte" bir sütun yazdırarak bunun üstesinden gelebilirsiniz, böylece önceden kalan her şeyi boşaltmak için boş alanlar yazdırılır. Ayrıca endCR'yi parametrenin içine de koyabilirsiniz .
Böylece:
import time
for i in range(10):
time.sleep(1)
print('{: <3}'.format(10-i), end='\r')
Bu, boşluk dolu, sola hizalanmış, genişlikli bir sütunu belirtmek için bir biçim belirticisi kullanır . Sayacınızın ihtiyaç duyduğu sayıya bağlı olarak daha yüksek bir sayıya değiştirebilirsiniz . <33
Basit bir hatadan kaynaklanıyor, \ r:
Senin kodun:
print('{}\r'.format(10-i), end="")
# > 10,90,80
Şununla değiştirin:
print('{} \r'.format(10-i),
#> 10, 9, 8
Sorun, \rsatır başı tuşuna bastığınızda eski daktilo gibidir ve satır başlangıcına gider ve oradan bir karakter değiştirir. yani 10, ilk karakter değiştikçe 90 olur.
import time
for i in range(10):
time.sleep(1)
print('{:02d}'.format(10-i), end="\r")
Dolayısıyla, potansiyel çözümlerden biri genişliği sabitlemektir. burada 2 haneli yaptım