Вот еще один способ думать об этом:
Допустим, у вас есть два конкретных условия, что структуры перехвата if / else будет недостаточно:
Пример:
Iу меня 3 X 3 крестики-нолики, и я хочу напечатать координаты обеих диагоналей, а не остальных квадратов.
Я решил использовать вместо него структуру if / elif ...
for row in range(3):
for col in range(3):
if row == col:
print('diagonal1', '(%s, %s)' % (i, j))
elif col == 2 - row:
print('\t' * 6 + 'diagonal2', '(%s, %s)' % (i, j))
Вывод:
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
Но ждать!Я хотел включить все три координаты diagonal2, так как (1, 1) также является частью диагонали 2.
'elif' вызвал зависимость с 'if', так что если исходное 'if' былоудовлетворено, что «elif» не будет инициироваться, даже если логика «elif» также удовлетворяет условию.
Давайте вместо этого изменим второе «elif» на «if».
for row in range(3):
for col in range(3):
if row == col:
print('diagonal1', '(%s, %s)' % (i, j))
if col == 2 - row:
print('\t' * 6 + 'diagonal2', '(%s, %s)' % (i, j))
Теперь я получаю вывод, который хотел, потому что два оператора «если» взаимоисключающие.
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
В конечном итоге знание того, какого типа или результата вы хотите достичь, определит тип условных отношений / структуры, которые вы кодируете.