Пропускать части кода внутри цикла, если один раз найдено false

#python

#python

Вопрос:

Я использую OpenCV для отслеживания объекта в видеокадре. Если объект, который я отслеживаю, выходит за пределы ROI, кодам необходимо прекратить запись его текущего местоположения, даже если он вернется к ROI позже. Однако другие части кода все еще должны продолжать выполнять свою работу. Чтобы упростить проблему, я предполагаю, что a — это список, python выполнит итерацию по списку и выведет его индекс и значение. Если одно значение становится меньше 10, то код будет печатать только индекс значения, без значения. Для простой цели я использую следующие коды.

 a = [10,12,15,18,2,17,12,10,8,11]
con = True
for i in range(10):
    if con == False:
        print (i)
    else:
        print (i, a[i]) 
        if a[i]<10:
            con==False
  

Однако он не работает и всегда выполняет инструкцию ‘else’ и выдает следующий результат

 0 10
1 12
2 15
3 18
4 2
5 17
6 12
7 10
8 8
9 11
  

Есть ли какой-либо способ получить следующий результат —

 0 10
1 12
2 15
3 18
4 2
5 
6
7
8
9
  

Ожидаемый результат может быть получен путем проверки значения внутри цикла if else, но цель состоит в том, чтобы прекратить выполнение фрагмента кода после того, как определенное утверждение станет ложным.

Ответ №1:

В этом проблема:

 con==False
  

Это должно быть:

 con=False
  

Ответ №2:

Вот другой способ с enumerate:

 >>> a = [10,12,15,18,2,17,12,10,8,11]
>>> con = False
>>> for i, j in enumerate(a):
...     if j < 10:
...         con = True
...     if not con:
...         print(str(i)   ' '   str(j))
...     else:
...         print(str(i))
... 
0 10
1 12
2 15
3 18
4
5
6
7
8
9
  

Однако есть одна вещь, которая неясна… вы по-прежнему печатали 2, которое было первым значением, меньшим 10. Вы действительно хотите, чтобы это значение было напечатано?

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

1. Моей идеей было понять, что не так с моим подходом. Огромное спасибо, что подумали о 2. Я знал, что кто-нибудь спросит об этом.