Как я могу изменить текст, который уже напечатан? - PullRequest
1 голос
/ 14 февраля 2020

Я знаю, что это было опубликовано много раз, но я не могу найти рабочее решение для моей проблемы. Вот мой сценарий:

from time import sleep
x = 100
for i in range(0, 100):
    print(x, end="\r")
    x -=1
    sleep(1)

Когда я запускаю это, он печатает:

100
990
980
970

за исключением одной строки, и текст заменяется, и он продолжается. Я хочу, чтобы он сделал это:

100
99
98
97

в одной строке, и он идет до нуля, а текст заменяется. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Форматирование вашей строки работает:

import time

for x in range(100, 0, -1):
    time.sleep(1)
    print(f'{x:3d}', end='\r')

Это форматирует целые числа, откорректированные справа, с шириной в три цифры, и вы можете видеть «более короткие» числа. Или используйте f'{x: <3d}', чтобы цифры располагались слева (как предложено @Olvin Roght). f перед ним делает его форматной строкой. Содержимое внутри {} будет заменено, в этом случае значением x. Часть после : является форматированием. Здесь: десятичное целое с тремя цифрами.

0 голосов
/ 14 февраля 2020

Вы можете использовать str.ljust():

print(str(x).ljust(3), end="\r")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...