Разница между elif и or at python

Вопрос по работе оператора elif.
Есть задача из ЕГЭ https://inf-ege.sdamgia.ru/problem?id=47014. Решение мне понятно. Но не могу понять, почему не работает оператор elif, а именно как работает вот этот блок кода:

if sp4[0] % 5 == 0:
    if sp4[1] < v:
        k = k + 1
        sp3.append(sp4[0] + sp4[1])
elif sp4[1] % 5 == 0:
    if sp4[0] < v:
        k = k + 1
        sp3.append(sp4[0] + sp4[1])  

В моём понимании elif должен срабатывать так же, как и if с условием or:

if (sp4[0] % 5 == 0 and sp4[1] < v) or (sp4[1] % 5 == 0 and sp4[0] < v):
    k += 1
    sp3.append(sp4[0] + sp4[1])

Но этого не происходит. В итоге программа не досчитывает количество пар - это переменная k. Объясните, пожалуйста, почему задача не решается путём написания первого блока, то есть через использование elif.

Своё полное решение:

n = open("ffffff.txt")

sp = []
sp2 = []
for i in n:
    sp.append(i)
    sp2.append(int(i))

v = 0
f = 0
for t in sp2:
    if t % 2 == 1:
        v = v + t
        f = f + 1
v = v // f

c = 0
k = 0
sp3 = []

sp5 = []
sp6 = []
for q in range(len(sp2)-1):
    sp4 = [sp2[q], sp2[q+1]]


    if sp4[0] % 5 == 0:
        if sp4[1] < v:
            k = k + 1
            sp3.append(sp4[0] + sp4[1])
    elif sp4[1] % 5 == 0:
        if sp4[0] < v:
            k = k + 1
            sp3.append(sp4[0] + sp4[1])


    # if (sp4[0] % 5 == 0 and sp4[1] < v) or (sp4[1] % 5 == 0 and sp4[0] < v):
    #     k += 1
    #     sp3.append(sp4[0] + sp4[1])


print(k, max(sp3))

Ответы (4 шт):

Автор решения: Alexander Lonberg

Приведи пример к более простому варианту и сразу все станет на свои места:

x = 1

if x == 1:
  if ...
elif x == 1: # <- вот сюда мы никогда не попадем
  if ... 
→ Ссылка
Автор решения: карина

if с условием or означает, что одно из условий должно выполняться:

(условие1) or (условие2)

в случае с if, если условие if выполняется, оно не заходит в конструкцию elif.

→ Ссылка
Автор решения: CrazyElf

Первый вариант кода эквивалентен более сложному условию, чем вы написали:

if (sp4[0] % 5 == 0 and sp4[1] < v) or (sp4[0] % 5 != 0 and sp4[1] % 5 == 0 and sp4[0] < v):
                                        ^^^^^^^^^^^^^^^
→ Ссылка
Автор решения: Prog

когда стоит or, для выполнения условия должно выполниться хотя бы одно условие. а вы, написав

elif sp4[1] % 5 == 0: 
   if sp4[0] < v: 

сделали два обязательных условия, т.е. если их объединить, то логическое условие будет не or, а and

→ Ссылка