Функция print() без создания новой строки с заменой предыдущего значения

Подобные вопросы по ссылкам, но решений я не нашел

Обновляющаяся строка

Перебор цифр без создания новой строки

Есть цикл:

for ......
    ......
    print(..%)
    ......

который выводит:

1%
4%
8%
...
95%
100%

Вопрос: как сделать сделать чтобы проценты менялись, а не дописывались? т.е. чтобы сначала вывел

1%

затем заменил 1% на 4%

4%

и так менял цифры до 100%.


Ответы (3 шт):

Автор решения: Victor VosMottor

Пример:

import time
for i in range(100):
    print(i, end='\r')
    time.sleep(0.5)

→ Ссылка
Автор решения: Dmitry Sokolov
import time
for p in range(101):
    print(f"\r{p}%...", end="", flush=True)
    time.sleep(0.05)
print("done")
→ Ссылка
Автор решения: Швеев Алексей

Вы можете использовать управляющие символы

Конкретно для ваших целей нужны \r или \b

Символ \r перемещает курсор (который как бы печатает символы) в начало строки (идентично нажатию клавиши Home на клавиатуре). После чего символы заменяются на новые (как при нажатом insert)

При этом важно учесть, что не перезаписанные символы останутся

Например:

print("abcd\rAB ") # "AB d"

Вначале напечатает первые четыре символа: abcd|

Потом сдвинет курсор в начало: |abcd

И напечатает AB вместо abc: AB |d

Символ \b возвращает курсор только на один символ назад (аналогично нажатию на клавиатуре).

Например:

print("abcde\b\b\b 1") # "ab 1e"

Печатаем abcde|

Сдвигаем курсор на 3 символа назад: ab|cde

печатаем 1: ab 1|e

→ Ссылка