Cuando se coloca una instrucción if dentro de otra se denominan if anidados, y tiene la siguiente estructura:
def prog():
***
***
***
if condicion1:
***
***
if condicion2:
***
***
else:
***
***
else:
if condicion3:
***
***
else:
***
***
***
***
***
***
prog()
En este programa, se evalúa la condición 1. Si su resultado es verdadero, se ejecuta lo que está en el bloque if (Las instrucciones resaltadas en naranja, entre ellas el segundo if.)
Si el resultado de condición 1 es falso, se ejecuta lo que está en el bloque else, que es el tercer if (resaltado en amarillo).
Cualquiera de los dos if que se ejecute, analizará a su vez la condición correspondiente y elegira el bloque a ejecutar.
Para simplificar los programas con ifs anidados y evitar excesivas indentaciones, el python incluye la instrucción elif que es la abreviación de else ... if. Cuando dentro de una instrucción else lo único que hay es una instrucción if, pueden reemplazarse ambas por la única instrucción elif.
Veamos el ejemplo del apartado anterior:
def bisiesto():
"""Determinar si un año es bisiesto o no. Un año es bisiesto si es múltiplo de 4 y no es múltiplo
de 100, a menos que sea múltiplo de 400."""
a = int(input("Ingrese un año:"))
if a%4 == 0:
if a%100!=0:
print("Es bisiesto")
else:
if a%400==0:
print("Es bisiesto")
else:
print("No es bisiesto")
else:
print("no es bisiesto")
bisiesto()
"""Determinar si un año es bisiesto o no. Un año es bisiesto si es múltiplo de 4 y no es múltiplo
de 100, a menos que sea múltiplo de 400."""
a = int(input("Ingrese un año:"))
if a%4 == 0:
if a%100!=0:
print("Es bisiesto")
else:
if a%400==0:
print("Es bisiesto")
else:
print("No es bisiesto")
else:
print("no es bisiesto")
bisiesto()
Este programa puede simplificarse utilizando la instrucción elif:
def bisiesto():
"""Determinar si un año es bisiesto o no. Un año es bisiesto si es múltiplo de 4 y no es múltiplo
de 100, a menos que sea múltiplo de 400."""
a = int(input("Ingrese un año:"))
if a%4 == 0:
if a%100!=0:
print("Es bisiesto")
elif a%400==0:
print("Es bisiesto")
else:
print("No es bisiesto")
else:
print("no es bisiesto")
bisiesto()
"""Determinar si un año es bisiesto o no. Un año es bisiesto si es múltiplo de 4 y no es múltiplo
de 100, a menos que sea múltiplo de 400."""
a = int(input("Ingrese un año:"))
if a%4 == 0:
if a%100!=0:
print("Es bisiesto")
elif a%400==0:
print("Es bisiesto")
else:
print("No es bisiesto")
else:
print("no es bisiesto")
bisiesto()
Se pueden anidar cualquier cantidad de niveles, pero no es recomendable anidar más de dos o tres niveles de if, ya que de lo contrario sería muy confuso de leer. Para evitar más niveles, se puede recurrir a operadores relacionales y combinar varias condiciones simples en una compuesta.
No hay comentarios:
Publicar un comentario