#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}. если это проверка