Ésta es otra manera de pensar acerca de esto:
Digamos que usted tiene dos específicas condiciones que una estructura de catálogo if/else no será suficiente:
Ejemplo:
Tengo un tablero de 3 x 3 de tres en raya y quiero imprimir las coordenadas de ambas diagonales y no del resto de los cuadrados.
decido usar y si la estructura/elif lugar ...
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 salida es:
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
Pero espera! Quería incluir las tres coordenadas de diagonal2 ya que (1, 1) también forma parte de la diagonal 2.
El 'elif' causaba una dependencia con el 'si', de modo que si se satisfacía el 'si' original, 'elif' no se iniciará incluso si la lógica 'elif' también satisface la condición.
Cambiemos el segundo 'elif' por un 'if' en su lugar.
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))
Ahora obtengo la salida que quería porque las dos declaraciones 'if' son mutuamente excluyentes.
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
sabiendo En última instancia qué tipo o dar como resultado que desea lograr determinará qué tipo de relación/estructura condicional que código.
lo siento, los arreglé – Billjk