#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. Я знал, что кто-нибудь спросит об этом.