таймер времени python застрял на нуле

#python #python-3.x #validation #time #while-loop

#python #python-3.x #проверка #время #цикл while

Вопрос:

Я пытаюсь запустить таймер внутри проверки в цикле while.

т.е.

 if(foo):
   start_time
 

Я ожидаю, что он будет печатать инкрементное время, но он просто печатает нули и продолжит подсчет даже после проверки один раз.

Код:

 warning_timer = 0

while True:
        if warning_timer == 0:
                start_time = time.time()
                warning_timer = 1
        elapsed_time = time.time() - start_time
        print(time.strftime("%H:%M:%S", time.gmtime(elapsed_time)))
 

вывод:

 00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
 

Как мне использовать библиотеку времени для распечатки добавочного времени?

Комментарии:

1. Вы ждали> 1 секунды, чтобы пройти?

2. Что такое «проверка» — пожалуйста, объясните в своем вопросе.

Ответ №1:

Таймер сбрасывается на каждой итерации цикла, поэтому просто инициализация должна быть хорошей.

 import time
warning_timer = 0

if warning_timer == 0:
    start_time = time.time()
while True:
        elapsed_time = time.time() - start_time
        print(time.strftime("%H:%M:%S", time.gmtime(elapsed_time)))

 

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

 from random import randint
import time

warning_timer = 0

while True:
    if warning_timer == 0:
        start_time = time.time()
        time.sleep(randint(1, 4))
        elapsed_time = time.time() - start_time
        print(time.strftime("%H:%M:%S", time.gmtime(elapsed_time)))
 

Комментарии:

1. Спасибо. Ваш пост дал мне понять, что я делаю что-то еще неправильно. Я вижу, у вас есть новый аккаунт, так что я добавлю бонус.

2. Спасибо, я также добавил пример, чтобы показать прошедшее время между началом и окончанием с использованием функции sleep.

3. Еще раз спасибо. Какова цель randint(1,4) внутри sleep?

4. Функция randint генерирует случайное значение между первым и вторым значением. В этом случае используется для отображения случайного времени, прошедшего между начальным и конечным интервалом.

5. Когда я удаляю случайный, я снова получаю нули. Часы обычно являются инкрементными, а не случайными.

Ответ №2:

Вырезая ненужный код, просто инициализируйте start_time перед входом в цикл while True:

 start_time = time.time()
while True:
        elapsed_time = time.time() - start_time
        print(time.strftime("%H:%M:%S", time.gmtime(elapsed_time))
 

Примечание. Вам придется подождать хотя бы секунду, чтобы перейти от 00:00:00 к 00:00: 01

Комментарии:

1. Для того, чтобы это сработало, start_time должен находиться за проверкой. т.е. if(foo){start_time}

2. Нет, я не понимаю. Вы ранее не упоминали validation . Пожалуйста, объясните это новое требование в вашем вопросе.

3. Это первая строка в OP «Я пытаюсь запустить таймер внутри проверки в цикле while».

4. Пожалуйста, объясните в своем вопросе, что означает ‘проверка’

5. if(foo){start_time}. если это проверка