Ось ще один спосіб думати про це:
Скажімо, у вас є дві конкретні умови, яких не буде достатньою структурою catchall if / else:
Приклад:
У мене є дошка 3 х 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)
Але почекай! Я хотів включити всі три координати діагоналі2, оскільки (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)
Зрештою, знання, якого виду чи результату ви хочете досягти, визначить, який тип умовного відношення / структури ви кодуєте.