@programmer23145

Как постоянно обновлять принт?

Я хочу сделать что то вроде цифрового времени, чтобы внутри программы шли секунды, минуты и часы, и я мог это увидеть в начале строки которая должна постоянно обновлять свои данные, ну не могу это сделать.

import time
sec = 0
minutes = 0
hour = 0
print(sec, minutes, hour)
while True:
	sec+=1
	time.sleep(1)
	if sec == 60:
		minutes+=1
		
	if minutes == 60:
		hour+=1


что сюда можно добавить чтобы print обновлялся постоянно, ну типо чтобы как на компе или телефоне было.
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 2
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
import time
from os import system, name
def main():
    sec = 0
    minutes = 0
    hour = 0
    
    while True:
      hour_high = hour//10
      hour_low = hour%10

      min_high = minutes//10
      min_low = minutes%10

      sec_high = sec//10
      sec_low = sec%10

      timestring = f'{hour_high}{hour_low}:{min_high}{min_low}:{sec_high}{sec_low}'
      system('cls')
      print(timestring)  
      sec+=1
      time.sleep(1)
      if sec == 60:
        minutes+=1
        sec = 0
        
      if minutes == 60:
        hour+=1
        minutes = 0
      
if __name__ == '__main__':
    main()
Ответ написан
Vindicar
@Vindicar
RTFM!
Тут все предлагают system("cls"), хотя практичнее было бы использовать символ \x08.
Простой пример, для понимания:
print('foobar', flush=True, end='') #немедленный вывод без перевода строки
print('\x08'*3, flush=True, end='') #отступаем на три символа назад
print('xyz', flush=True, end='') #на экране будет выведено fooxyz

Но этот приём работает только если:
1. Данные выведены строго в одну строку, и курсор остаётся на ней.
2. Известна длина затираемой части строки.
3. Обновлять таким образом нужно только одно значение на экране.

В противном случае либо используешь приём с cls, либо вообще плюёшь на терминал и делаешь GUI.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы