Akela953
@Akela953
Учусь писать код)

Как по 1 разу выполнять действие в беск. цикле каждый раз, когда есть совпадение?

Привет. Наверное, не особо поняли заголовок.
У меня есть такой массив со временем:
time= ['19:18', '19:19']
Как мне в бесконечном цикле (while True) сделать так, чтобы каждый раз, когда моё время совпадало с временем в массиве - 1 раз текст выводился в print и при этом, цикл продолжал работать.
Пробовал break, но он полностью выходит из цикла и приходится заново запускать.
Ещё пробовал через bool переменные, то есть по умолчанию ставить значение переменной True и в беск. цикле при совпадении времени ставить его на False.

Вот мой код:
import datetime
time= ['19:18', '19:19']

while True:
    for item in time:
        nowtime = datetime.datetime.now().strftime("%H:%M") 
        if item == nowtime:
            print("Есть совпадение")
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Банально слип на минуту можно сделать, если секунды не нужны
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
import datetime
time= ['19:44', '19:45']
founded = ''
while True:
    nowtime = datetime.datetime.now().strftime("%H:%M") 
    if nowtime in time:
        if nowtime != founded:
            print("Есть совпадение")
        founded = str(nowtime)
Ответ написан
@KingstonKMS
Добавить секунды в строку времени, а в цикле while добавить time.sleep(1)
Или просто sleep(60) в цикл
Ответ написан
Комментировать
MinTnt
@MinTnt
Для тех кто так же любит решения, в одну строчку
from datetime import datetime
from time import sleep

Timer = ['19:50', '19:53']
while True: print('Есть совпадение') == sleep(60) if datetime.now().strftime("%H:%M") in Timer else sleep(60)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы