Не могу очистить строку в Python с помощью \ r - PullRequest
0 голосов
/ 17 марта 2019

Итак, я пытаюсь сделать что-то вроде индикатора выполнения в Python, и в цикле for я написал следующее:

print(i, end='\r', flush=True)
sleep(0.1)

, поэтому он должен написать 0, а затем 1,и т. д. Но вместо этого я получаю что-то вроде:

0123456789101112131415161718192021222324252627282930313233343536373839

Что я делаю не так?

Обновление: я использую Spyder.

Вот весь цикл:

for i in range(it):
    _sum += z**i * f(i)
    print(i, end='\r', flush=True)
    sleep(0.1)

1 Ответ

0 голосов
/ 17 марта 2019

Это работает для меня, как задумано, трудно сказать, в чем проблема с вашим кодом, так как вы разместили только дробный код

Если вы используете цикл for со списком, то это должно бытьотформатирован правильно.используйте список, если вы планируете использовать номера для заказа.

import time
numbers = ['1','2','3','4','5','6','7']

for number in numbers:
    print(number, end='\r', flush=True)
    time.sleep(0.5)

Если вы хотите последовательное перечисление, то вы можете использовать каноническое выражение:

for number in range(20):
    print(number, end='\r', flush=True)
    time.sleep(1)

Или, если вы хотитеиспользовать цикл while

import time
n = 0
while n <= 15:
    n += 1
    print(n, end='\r', flush=True)
    time.sleep(0.5)

Все три цикла работают так, как задумано и почти одинаково

...