Python: таймер обратного отсчёта
Сделаем простой таймер обратного отсчёта, который раз в секунду обновляет вывод в формате мм:сс прямо на одной строке терминала.
Что нужно знать
Функция divmod()
Пример: обратный отсчёт
import time
def countdown(time_sec):
while time_sec:
mins, secs = divmod(time_sec, 60)
timeformat = '{:02d}:{:02d}'.format(mins, secs)
print(timeformat, end='\r')
time.sleep(1)
time_sec -= 1
print("stop")
countdown(5)
Как это работает
divmod(time_sec, 60)сразу возвращает пару чисел: целое количество минут и остаток в секундах. Это удобнее, чем считать по отдельности.Форматирование
{:02d}дополняет числа ведущим нулём, чтобы значения всегда были двузначными.Аргумент
end='\r'вprint()ставит курсор в начало строки вместо перехода на новую — благодаря этому каждое следующее значение «перерисовывает» предыдущее.time.sleep(1)приостанавливает программу на одну секунду между кадрами.В конце каждой итерации значение
time_secуменьшается на единицу; когда оно становится равным0, цикл завершается и печатаетсяstop.