Функция print() без создания новой строки с заменой предыдущего значения
Подобные вопросы по ссылкам, но решений я не нашел
Перебор цифр без создания новой строки
Есть цикл:
for ......
......
print(..%)
......
который выводит:
1%
4%
8%
...
95%
100%
Вопрос: как сделать сделать чтобы проценты менялись, а не дописывались? т.е. чтобы сначала вывел
1%
затем заменил 1% на 4%
4%
и так менял цифры до 100%.
Ответы (3 шт):
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
