@EvilPlay97

Как заставить второй цикл работать после первого, третий после второго и т.д?

Есть вот такой код, нужно чтобы второй цикл начинал работать, только после завершения первого, третий после завершения 1 и 2. и так далее.
Не могу понять как это реализовать
from datetime import datetime, timedelta
import pyautogui


timeStart = datetime.now()
timeFinish = timeStart + timedelta(seconds=30)
while timeStart<timeFinish:
  button = pyautogui.locateOnScreen('C:\img\Fish1.1.png', confidence = 0.5)
  if button:
      pyautogui.press("Space")
      break
      timeStart = datetime.now()

while timeStart<timeFinish:
  button1 = pyautogui.locateOnScreen('C:\img\Fish1.22.png', confidence = 0.6)
  if button1:
      pyautogui.press("Space")
      break
      timeStart = datetime.now()
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Mamut_rahal
Для того, чтобы каждый цикл начинал работу после завершения предыдущего, важно правильно управлять условиями и обновлением времени в циклах. Основная проблема в вашем коде — неверное обновление переменной `timeStart` после выполнения каждого действия внутри цикла. Кроме того, в вашем коде `break` останавливает цикл до того, как переменная `timeStart` обновляется.

Вам необходимо:

1. Переместить обновление `timeStart` перед `break`, чтобы обеспечить корректное обновление времени.
2. Пересчитывать `timeFinish` для каждого цикла, чтобы обеспечить, что каждый цикл длится нужное количество времени после своего начала.

Вот как можно модифицировать ваш код:

from datetime import datetime, timedelta
import pyautogui

# Первый цикл
timeStart = datetime.now()
timeFinish = timeStart + timedelta(seconds=30)
while datetime.now() < timeFinish:
    button = pyautogui.locateOnScreen('C:\\img\\Fish1.1.png', confidence=0.5)
    if button:
        pyautogui.press("Space")
        timeStart = datetime.now()  # Обновляем timeStart перед выходом
        break

# Второй цикл
timeStart = datetime.now()
timeFinish = timeStart + timedelta(seconds=30)
while datetime.now() < timeFinish:
    button1 = pyautogui.locateOnScreen('C:\\img\\Fish1.22.png', confidence=0.6)
    if button1:
        pyautogui.press("Space")
        timeStart = datetime.now()  # Обновляем timeStart перед выходом
        break

# Если требуется добавить больше циклов, повторяйте шаблон аналогично
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
timeFinish = datetime.now() + timedelta(seconds=30)
while datetime.now() < timeFinish:
  button = pyautogui.locateOnScreen('C:\img\Fish1.1.png', confidence = 0.5)
  if button:
      pyautogui.press("Space")
      break
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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