Voici une autre façon de voir les choses :
Disons que vous avez deux conditions spécifiques pour lesquelles une structure fourre-tout if/else ne suffira pas :
Exemple :
J'ai un plateau de morpion de 3 X 3 et je veux imprimer les coordonnées des deux diagonales et non le reste des carrés.
Je décide d'utiliser une structure if/elif à la place...
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))
La sortie est :
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
Mais attendez ! Je voulais inclure les trois coordonnées de la diagonale 2 puisque (1, 1) fait également partie de la diagonale 2.
Le "elif" a créé une dépendance avec le "if", de sorte que si le "if" original a été satisfait, le "elif" ne se déclenchera pas, même si la logique "elif" a également satisfait la condition.
Remplaçons le deuxième "elif" par un "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))
J'obtiens maintenant le résultat que je voulais parce que les deux instructions "if" s'excluent mutuellement.
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
En fin de compte, c'est le fait de savoir quel type de résultat vous voulez obtenir qui déterminera le type de relation/structure conditionnelle que vous coderez.