Sunteți pe pagina 1din 48

14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.

org

if ... elif ... else ... - Ejercicios


Estos ejercicios corresponden a lo explicado en la lección If ... elif ... else ....
Se pueden consultar unas posibles soluciones.

MPTC
if ... elif ... else ... - 1
11
Escriba un programa que pida dos números enteros y que calcule su división, escribiendo si la
división es exacta o no.

DIVISOR DE NÚMEROS
Escriba el dividendo: 14
Escriba el divisor: 5
La división no es exacta. Cociente: 2 Resto: 4
DIVISOR DE NÚMEROS
Escriba el dividendo: 20
Escriba el divisor: 4
La división es exacta. Cociente: 5

MPTC
1-2 - División por cero
12
Mejore el programa anterior haciendo que tenga en cuenta que no se puede dividir por cero:

DIVISOR DE NÚMEROS
Escriba el dividendo: 20
Escriba el divisor: 0
No se puede dividir por cero.

MPTC
if ... elif ... else ... - 2
13
Escriba un programa que pida dos números y que conteste cuál es el menor y cuál el mayor o que
escriba que son iguales.

COMPARADOR DE NÚMEROS
Escriba un número: 23
Escriba otro número: 14.5
Menor: 14.5; Mayor: 23.0
COMPARADOR DE NÚMEROS
Escriba un número: 5.0
Escriba otro número: 5
Los dos números son iguales.

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 1/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

MPTC
if ... elif ... else ... - 3
14
Escriba un programa que pida el año actual y un año cualquiera y que escriba cuántos años han
pasado desde ese año o cuántos años faltan para llegar a ese año.

COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 2024
Para llegar al año 2020 faltan 5 años.
COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 1997
Desde el año 1997 han pasado 22 años.
COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 2019
¡Son el mismo año!

MPTC
3-2 - Diferencia de un año
15
Mejore el programa anterior haciendo que cuando la diferencia sea exactamente un año, escriba la
frase en singular:

COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 2020
Para llegar al año 2016 falta 1 año.

MPTC
if ... elif ... else ... - 4
16
Escriba un programa que pida dos números enteros y que escriba si el mayor es múltiplo del menor.

COMPARADOR DE MÚLTIPLOS
Escriba un número: 48
Escriba otro número: 6
48 es múltiplo de 6.
COMPARADOR DE MÚLTIPLOS
Escriba un número: 6
Escriba otro número: 48
48 es múltiplo de 6.
COMPARADOR DE MÚLTIPLOS
Escriba un número: 6

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 2/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Escriba otro número: 49


49 no es múltiplo de 6.
COMPARADOR DE MÚLTIPLOS
Escriba un número: 6
Escriba otro número: 6
6 es múltiplo de 6.

MPTC
4-2 - Valores negativos o nulos
17
Mejore el programa anterior haciendo que el programa avise cuando se escriben valores negativos o
nulos.

COMPARADOR DE MÚLTIPLOS
Escriba un número: 5
Escriba otro número: -10
Lo siento, este programa no admite valores negativos.

COMPARADOR DE MÚLTIPLOS
Escriba un número: 0
Escriba otro número: 5
Lo siento, este programa no admite valores nulos.

MPTC
if ... elif ... else ... - 5
18
Escriba un programa que pida tres números y que escriba si son los tres iguales, si hay dos iguales o
si son los tres distintos.

COMPARADOR DE TRES NÚMEROS


Escriba un número: 6
Escriba otro número: 6
Escriba otro número más: 6
Ha escrito tres veces el mismo número.

COMPARADOR DE TRES NÚMEROS


Escriba un número: 6
Escriba otro número: 6.5
Escriba otro número más: 6
Ha escrito uno de los números dos veces.
COMPARADOR DE TRES NÚMEROS
Escriba un número: 4.3
Escriba otro número: 5.14
Escriba otro número más: -6
Los tres números que ha escrito son distintos.

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 3/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

MPTC
if ... elif ... else ... - 6
19
Escriba un programa que pida un año y que escriba si es bisiesto o no.
Se recuerda que los años bisiestos son múltiplos de 4, pero los múltiplos de 100 no lo son, aunque
los múltiplos de 400 sí.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 2012
El año 2012 es un año bisiesto porque es múltiplo de 4 sin ser múltiplo de
100.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 2010
El año 2010 no es un año bisiesto.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 2000
El año 2000 es un año bisiesto porque es múltiplo de 400.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 1900
El año 1900 no es un año bisiesto porque es múltiplo de 100 sin ser múltiplo
de 400.

MPTC
if ... elif ... else ... - 7
20
Escriba un programa que pida los coeficientes de una ecuación de primer grado (a x + b = 0) y
escriba la solución.
Se recuerda que una ecuación de primer grado puede no tener solución, tener una solución única, o
que todos los números sean solución. Se recuerda que la fórmula de las soluciones es x = -b / a
Estos son algunos ejemplos de posibles respuestas (el orden de los ejemplos no tiene por qué
corresponder con el orden de las condiciones):

ECUACIÓN A X + B = 0
Escriba el valor del coeficiente a: 0
Escriba el valor del coeficiente b: 3
La ecuación no tiene solución.

ECUACIÓN A X + B = 0
Escriba el valor del coeficiente a: 4.2
Escriba el valor del coeficiente b: 21
La ecuación tiene una solución: -5.0

ECUACIÓN A X + B = 0
Escriba el valor del coeficiente a: 0

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 4/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Escriba el valor del coeficiente b: 0


Todos los números son solución.

MPTC
if ... elif ... else ... - 8
21
Escriba un programa que pida los coeficientes de una ecuación de segundo grado (a x² + b x + c = 0)
y escriba la solución.
Se recuerda que una ecuación de segundo grado puede no tener solución, tener una solución única,
tener dos soluciones o que todos los números sean solución. Se recuerda que la fórmula de las
soluciones cuando hay dos soluciones es x = (-b ± √(b2-4ac) ) / (2a)
Estos son algunos ejemplos de posibles respuestas (el orden de los ejemplos no tiene por qué
corresponder con el orden de las condiciones).

a b c Solución
1 -2 2 Sin solución real
2 -7 3 Dos soluciones: 0.5 y 3.0
1 2 1 Una solución: -1.0
0 0 5 Sin solución
0 0 0 Todos los números son solución
0 3 2 Una solución: -0.666...

ECUACIÓN A X² + B X + C = 0
Escriba el valor del coeficiente a: 2
Escriba el valor del coeficiente b: -7
Escriba el valor del coeficiente c: 3
La ecuación tiene dos soluciones: 3.0 y 0.5

MPTC
if ... elif ... else ... - 9
22
Escriba un programa que pregunte primero si se quiere calcular el área de un triángulo o la de un
círculo. Si se contesta que se quiere calcular el área de un triángulo (escribiendo T o t), el programa
tiene que pedir entonces la base y la altura y escribir el área. Si se contesta que se quiere calcular el
área de un círculo (escribiendo C o c), el programa tiene que pedir entonces el radio y escribir el
área.
Se recuerda que el área de un triángulo es base por altura dividido por 2 y que el área de un círculo
es Pi (aproximadamente 3,141592) por el radio al cuadrado.
Nota: Utilice como valor de pi el valor 3.141592.

CÁLCULO DE ÁREAS
Elija una figura geométrica:
a) Triángulo
b) Círculo
¿Qué figura quiere calcular (Escriba T o C)? T
www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 5/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Escriba la base: 3
Escriba la altura: 5.5
Un triángulo de base 3.0 y altura 5.0 tiene un área de 8.25
CÁLCULO DE ÁREAS
Elija una figura geométrica:
a) Triángulo
b) Círculo
¿Qué figura quiere calcular (Escriba T o C)? C
Escriba el radio: 2
Un círculo de radio 2.0 tiene un área de 12.566370614359172

MPTC
if ... elif ... else ... - 10
23
Escriba un programa que pida una distancia en centímetros y que escriba esa distancia en
kilómetros, metros y centímetros (escribiendo todas las unidades).

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 0
Escriba una distancia mayor que cero.
CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 43210
43210 centímetros son 0 km 432 m 10 cm.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 56
56 centímetros son 0 km 0 m 56 cm.

MPTC
10-2 - Sin unidades innecesarias
24
Mejore el programa anterior haciendo que no se escriban las unidades innecesarias (cuando el valor
es cero).

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100
100 centímetros son 1 m.
CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100001
100001 centímetros son 1 km 1 cm.

10-3 - Con comas

Mejore el programa anterior haciendo que se escriban comas después de las unidades (excepto en
la última).

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 6/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100510
100510 centímetros son 1 km, 5 m, 10cm.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100100
100100 centímetros son 1 km, 1 m.

10-4 - Con comas e "y"

Mejore el programa anterior haciendo que se escriban la conjunción "y" antes de la última unidad.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100510
100510 centímetros son 1 km, 5 m y 10cm.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100100
100100 centímetros son 1 km y 1 m.

Más ejercicios
Ejercicios de exámenes anteriores

Última modificación de esta página: 7 de marzo de 2019

Esta página forma parte del curso Introducción a la programación con Python por Bartolomé
Sintes Marco
que se distribuye bajo una Licencia Creative Commons Reconocimiento-CompartirIgual 4.0
Internacional (CC BY-SA 4.0).

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 7/7
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

if... elif... else... - Soluciones


Se ofrecen a continuación unas posibles soluciones de los ejercicios de if ... elif ... else ....

if ... elif ... else ... - 1

MPTC
Sin tener en cuenta que el divisor no puede ser cero
11
Una posible solución es la siguiente:

def main():
print("DIVISOR DE NÚMEROS")
dividendo = int(input("Escriba el dividendo: "))
divisor = int(input("Escriba el divisor: "))

if dividendo % divisor == 0:
print(f"La división es exacta. Cociente: {dividendo // divisor}")
else:
print(
f"La división no es exacta. Cociente: {dividendo // divisor} "
f"Resto: {dividendo % divisor}"
)

if __name__ == "__main__":
main()

Aprovechando que un número distinto de cero se considera True, también se podría escribir:

def main():
print("DIVISOR DE NÚMEROS")
dividendo = int(input("Escriba el dividendo: "))
divisor = int(input("Escriba el divisor: "))

if dividendo % divisor:
print(
f"La división no es exacta. Cociente: {dividendo // divisor} "
f"Resto: {dividendo % divisor}"
)
else:

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 1/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

print(f"La división es exacta. Cociente: {dividendo // divisor}")

if __name__ == "__main__":
main()

También se pueden utilizar variables auxiliares y hacer los cálculos antes del if:

def main():
print("DIVISOR DE NÚMEROS")
dividendo = int(input("Escriba el dividendo: "))
divisor = int(input("Escriba el divisor: "))

cociente = dividendo // divisor


resto = dividendo % divisor

if resto == 0:
print(f"La división es exacta. Cociente: {cociente}")
else:
print(f"La división no es exacta. Cociente: {cociente} Resto:
{resto}")

if __name__ == "__main__":
main()

Se pueden escribir sentencias condicionales independientes, aunque no sea aconsejable hacerlo:

def main():
print("DIVISOR DE NÚMEROS")
dividendo = int(input("Escriba el dividendo: "))
divisor = int(input("Escriba el divisor: "))

if dividendo % divisor == 0:
print(f"La división es exacta. Cociente: {dividendo // divisor}")
if dividendo % divisor != 0:
print(
f"La división no es exacta. Cociente: {dividendo // divisor} "
f"Resto: {dividendo % divisor}"
)

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 2/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

if __name__ == "__main__":
main()

MPTC
División por cero
12
Si se quiere tener en cuenta que no se puede dividir por cero, no se pueden utilizar tres sentencias
condicionales independientes. Se podrían utilizar sentencias anidadas:

def main():
print("DIVISOR DE NÚMEROS")
dividendo = int(input("Escriba el dividendo: "))
divisor = int(input("Escriba el divisor: "))

if divisor == 0:
print("No se puede dividir por cero.")
else:
if dividendo % divisor == 0:
print(f"La división es exacta. Cociente: {dividendo // divisor}")
else:
print(
f"La división no es exacta. Cociente: {dividendo // divisor}
"
f"Resto: {dividendo % divisor}"
)

if __name__ == "__main__":
main()

... o sentencias condicionales encadenadas:

def main():
print("DIVISOR DE NÚMEROS")
dividendo = int(input("Escriba el dividendo: "))
divisor = int(input("Escriba el divisor: "))

if divisor == 0:
print("No se puede dividir por cero.")
elif dividendo % divisor == 0:
print(f"La división es exacta. Cociente: {dividendo // divisor}")
else:
print(
f"La división no es exacta. Cociente: {dividendo // divisor} "
www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 3/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

f"Resto: {dividendo % divisor}"


)

if __name__ == "__main__":
main()

MPTC
if ... elif ... else ... - 2
13
Una posible solución es la siguiente:

def main():
print("COMPARADOR DE NÚMEROS")
numero_1 = float(input("Escriba un número: "))
numero_2 = float(input("Escriba otro número: "))

if numero_1 > numero_2:


print(f"Menor: {numero_2} Mayor: {numero_1}")
elif numero_1 < numero_2:
print(f"Menor: {numero_1} Mayor: {numero_2}")
else:
print("Los dos números son iguales.")

if __name__ == "__main__":
main()

if ... elif ... else ... - 3

MPTC
Sin tener en cuenta que la diferencia puede ser un año
14
Una posible solución es la siguiente:

def main():
print("COMPARADOR DE AÑOS")
fecha_1 = int(input("¿En qué año estamos?: "))
fecha_2 = int(input("Escriba un año cualquiera: "))

if fecha_1 > fecha_2:


print(f"Desde el año {fecha_2} han pasado {fecha_1 - fecha_2} años.")
elif fecha_1 < fecha_2:
print(f"Para llegar al año {fecha_2} faltan {fecha_2 - fecha_1}
www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 4/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

años.")
else:
print("¡Son el mismo año!")

if __name__ == "__main__":
main()

MPTC
Teniendo en cuenta que la diferencia puede ser un año
15
El siguiente programa tiene en cuenta cuando la diferencia entre fechas es únicamente un año:

def main():
print("COMPARADOR DE AÑOS")
fecha_1 = int(input("¿En qué año estamos?: "))
fecha_2 = int(input("Escriba un año cualquiera: "))

if fecha_1 - fecha_2 == 1:
print(f"Desde el año {fecha_2} ha pasado 1 año.")
elif fecha_1 > fecha_2:
print(f"Desde el año {fecha_2} han pasado {fecha_1 - fecha_2} años.")
elif fecha_1 - fecha_2 == -1:
print(f"Para llegar al año {fecha_2} falta 1 año.")
elif fecha_1 < fecha_2:
print(f"Para llegar al año {fecha_2} faltan {fecha_2 - fecha_1}
años.")
else:
print("¡Son el mismo año!")

if __name__ == "__main__":
main()

El siguiente programa calcula la diferencia antes de evaluar las condiciones:

def main():
print("COMPARADOR DE AÑOS")
fecha_1 = int(input("¿En qué año estamos?: "))
fecha_2 = int(input("Escriba un año cualquiera: "))
diferencia = fecha_1 - fecha_2

if diferencia == 1:

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 5/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

print(f"Desde el año {fecha_2} ha pasado 1 año.")


elif diferencia > 1:
print(f"Desde el año {fecha_2} han pasado {diferencia} años.")
elif diferencia == -1:
print(f"Para llegar al año {fecha_2} falta 1 año.")
elif diferencia < -1:
print(f"Para llegar al año {fecha_2} faltan {-diferencia} años.")
else:
print("¡Son el mismo año!")

if __name__ == "__main__":
main()

if ... elif ... else ... - 4

MPTC
Sin tener en cuenta que no se deben escribir valores negativos o nulos
16
Una posible solución es la siguiente:

def main():
print("COMPARADOR DE MÚLTIPLOS")
numero_1 = int(input("Escriba un número: "))
numero_2 = int(input("Escriba otro número: "))

if numero_1 >= numero_2 and numero_1 % numero_2 != 0:


print(f"{numero_1} no es múltiplo de {numero_2}.")
elif numero_1 >= numero_2 and numero_1 % numero_2 == 0:
print(f"{numero_1} es múltiplo de {numero_2}.")
elif numero_1 < numero_2 and numero_2 % numero_1 != 0:
print(f"{numero_2} no es múltiplo de {numero_1}.")
else:
print(f"{numero_2} es múltiplo de {numero_1}.")

if __name__ == "__main__":
main()

El siguiente programa utiliza sentencias condicionales anidadas:

def main():
print("COMPARADOR DE MÚLTIPLOS")
www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 6/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

numero_1 = int(input("Escriba un número: "))


numero_2 = int(input("Escriba otro número: "))

if numero_1 >= numero_2:


if numero_1 % numero_2 != 0:
print(f"{numero_1} no es múltiplo de {numero_2}.")
else:
print(f"{numero_1} es múltiplo de {numero_2}.")
else:
if numero_2 % numero_1 != 0:
print(f"{numero_2} no es múltiplo de {numero_1}.")
else:
print(f"{numero_2} es múltiplo de {numero_1}.")

if __name__ == "__main__":
main()

El siguiente programa utiliza variables auxiliares que almacenan el número más grande y el más
pequeño:

def main():
print("COMPARADOR DE MÚLTIPLOS")
numero_1 = int(input("Escriba un número: "))
numero_2 = int(input("Escriba otro número: "))

if numero_1 >= numero_2:


mayor = numero_1
menor = numero_2
else:
mayor = numero_2
menor = numero_1

if mayor % menor != 0:
print(f"{mayor} no es múltiplo de {menor}.")
else:
print(f"{mayor} es múltiplo de {menor}.")

if __name__ == "__main__":
main()

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 7/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

MPTC
Teniendo en cuenta que no se deben escribir valores negativos o nulos
17
Una posible solución es la siguiente:

def main():
print("COMPARADOR DE MÚLTIPLOS")
numero_1 = int(input("Escriba un número: "))
numero_2 = int(input("Escriba otro número: "))

if numero_1 == 0 or numero_2 == 0:
print("Lo siento, este programa no admite valores nulos.")
elif numero_1 < 0 or numero_2 < 0:
print("Lo siento, este programa no admite valores negativos.")
elif numero_1 >= numero_2 and numero_1 % numero_2 != 0:
print(f"{numero_1} no es múltiplo de {numero_2}.")
elif numero_1 >= numero_2 and numero_1 % numero_2 == 0:
print(f"{numero_1} es múltiplo de {numero_2}.")
elif numero_1 < numero_2 and numero_2 % numero_1 != 0:
print(f"{numero_2} no es múltiplo de {numero_1}.")
else:
print(f"{numero_2} es múltiplo de {numero_1}.")

if __name__ == "__main__":
main()

MPTC
if ... elif ... else ... - 5
18
En este ejercicio unas situaciones incluyen a otras (el caso "tres valores iguales" es un caso
particular del caso "dos valores iguales"). En esos casos, el orden en que se comprueban las
situaciones hace que las expresiones sean más o menos complicadas.

En el siguiente programa se trata primero el caso más complicado (dos números iguales), por lo que
la primera condición es complicada. Hay que comprobar todos los casos posibles (que cualquier
pareja de valores sean iguales y que el tercer número sea distinto). La condición está escrita entre
paréntesis porque ocupa más de un línea.

def main():
print("COMPARADOR DE TRES NÚMEROS")
numero_1 = float(input("Escriba un número: "))
numero_2 = float(input("Escriba otro número: "))
numero_3 = float(input("Escriba otro número más: "))

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 8/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

if (numero_1 == numero_2 != numero_3 or numero_1 == numero_3 != numero_2


or
numero_2 == numero_3 != numero_1):
print("Ha escrito uno de los números dos veces.")
elif numero_1 == numero_2 == numero_3:
print("Ha escrito tres veces el mismo número.")
else:
print("Los tres números que ha escrito son distintos.")

if __name__ == "__main__":
main()

En el siguiente programa el caso más complicado (dos números iguales) se deja para el final, para
no tener que escribir la condición de ese caso

def main():
print("COMPARADOR DE TRES NÚMEROS")
numero_1 = float(input("Escriba un número: "))
numero_2 = float(input("Escriba otro número: "))
numero_3 = float(input("Escriba otro número más: "))

if numero_1 != numero_2 and numero_1 != numero_3 and numero_2 !=


numero_3:
print("Los tres números que ha escrito son distintos.")
elif numero_1 == numero_2 == numero_3:
print("Ha escrito tres veces el mismo número.")
else:
print("Ha escrito uno de los números dos veces.")

if __name__ == "__main__":
main()

En el siguiente programa, aunque el caso más complicado (dos números iguales) no se deja para el
final, la condición correspondiente no es tan complicada como en el primer ejemplo, ya que la
primera condición elimina los casos en los que los tres números son iguales y en la segunda
condición simplemente se comprueba que haya dos iguales (no hace falta comprobar que el tercero
sea distinto puesto que si fueran iguales se cumpliría la primera condición).

def main():
print("COMPARADOR DE TRES NÚMEROS")
numero_1 = float(input("Escriba un número: "))

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 9/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

numero_2 = float(input("Escriba otro número: "))


numero_3 = float(input("Escriba otro número más: "))

if numero_1 == numero_2 == numero_3:


print("Ha escrito tres veces el mismo número.")
elif numero_1 == numero_2 or numero_1 == numero_3 or numero_2 ==
numero_3:
print("Ha escrito uno de los números dos veces.")
else:
print("Los tres números que ha escrito son distintos.")

if __name__ == "__main__":
main()

Es importante señalar que mientras que en el primer y segundo programa se podrían intercambiar la
primera y segunda condición y los programas seguirían funcionando, en el tercer programa no se
podrían intercambiar la primera y segunda condición ya que el programa no daría la respuesta
correcta al escribir tres valores iguales.

MPTC
if ... elif ... else ... - 6
19
En este ejercicio la complejidad de las condiciones depende del orden en que se consideren los
casos.
Una posible solución es la siguiente:

def main():
print("COMPROBADOR DE AÑOS BISIESTOS")
fecha = int(input("Escriba un año y le diré si es bisiesto: "))

if fecha %4 != 0:
print(f"El año {fecha} no es un año bisiesto.")
elif fecha % 100 == 0 and fecha % 400 != 0:
print(f"El año {fecha} no es un año bisiesto porque es múltiplo de
100 "
f"sin ser múltiplo de 400.")
elif fecha % 4 == 0 and fecha % 100 != 0:
print(f"El año {fecha} es un año bisiesto porque es múltiplo de 4 sin
ser múltiplo de 100.")
else:
print(f"El año {fecha} es un año bisiesto porque es múltiplo de
400.")

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 10/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

if __name__ == "__main__":
main()

Como algunos de estos casos están incluidos en otros (los múltiplos de 400 son múltiplos de 100 y
los múltiplos de 100 son múltiplos de 4), las condiciones se pueden simplificar si se empieza por el
caso más especial.
Si comprobamos en el primer caso si la fecha es múltiplo de 400, en el segundo caso no hace falta
comprobar que la fecha no sea múltiplo de 400. Y de la misma manera, en el tercer caso no hace
falta comprobar que la fecha sea múltiplo de 100.

def main():
print("COMPROBADOR DE AÑOS BISIESTOS")
fecha = int(input("Escriba un año y le diré si es bisiesto: "))

if fecha % 400 == 0:
print(f"El año {fecha} es un año bisiesto porque es múltiplo de
400.")
elif fecha % 100 == 0:
print(f"El año {fecha} no es un año bisiesto porque es múltiplo de
100 "
f"sin ser múltiplo de 400.")
elif fecha % 4 == 0:
print(f"El año {fecha} es un año bisiesto porque es múltiplo de 4 sin
ser múltiplo de 100.")
else:
print(f"El año {fecha} no es un año bisiesto.")

if __name__ == "__main__":
main()

En el programa anterior el orden en que se hacen las comprobaciones es muy importante. Si se


reordenaran las sentencias sin modificar las condiciones, el programa fallaría.

El programa puede compactarse si no se detallan los motivos por los que un año es bisiesto y
simplemente se responde si el año es bisiesto o no:

def main():
print("COMPROBADOR DE AÑOS BISIESTOS")
fecha = int(input("Escriba un año y le diré si es bisiesto: "))

if fecha % 400 == 0 or fecha % 100 != 0 and fecha % 4 == 0:


print(f"El año {fecha} es un año bisiesto.")
www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 11/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

else:
print(f"El año {fecha} no es un año bisiesto.")

if __name__ == "__main__":
main()

MPTC
if ... elif ... else ... - 7
20
Para simplificar las condiciones es necesario considerar antes los casos más especiales. El primer
caso es el caso más especial (ambos coeficientes nulos), el segundo caso es el siguiente más
especial (el coeficiente "a" nulo) y el último el más general (ambos coeficientes no nulos).
Una posible solución es la siguiente:

def main():
print("ECUACIÓN A X + B = 0")
a = float(input("Escriba el valor del coeficiente a: "))
b = float(input("Escriba el valor del coeficiente b: "))

if a == b == 0:
print("Todos los números son solución.")
elif a == 0:
print("La ecuación no tiene solución.")
else:
print(f"La ecuación tiene una solución: {- b / a}")

if __name__ == "__main__":
main()

MPTC
if ... elif ... else ... - 8
21
Para simplificar las condiciones es necesario considerar antes los casos más especiales. Las tres
primeras son similares a las del ejercicio de la ecuación de primer grado (el término "a" es 0) y el
orden es importante. Las tres últimas corresponden a ecuaciones de segundo grado propiamente
dichas (el término "a" es distinto de 0).
Una posible solución es la siguiente:

def main():
print("ECUACIÓN A X² + B X + C = 0")
a = float(input("Escriba el valor del coeficiente a: "))
b = float(input("Escriba el valor del coeficiente b: "))

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 12/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

c = float(input("Escriba el valor del coeficiente c: "))

d = b * b - 4 * a * c
if a == b == c == 0:
print("Todos los números son solución.")
elif a == b == 0:
print("La ecuación no tiene solución.")
elif a == 0:
print(f"La ecuación tiene una solución: {- c / b}")
elif d < 0:
print("La ecuación no tiene solución real.")
elif d == 0:
print(f"La ecuación tiene una solución: {- b / (2 * a)}")
else:
print(
f"La ecuación tiene dos soluciones: {(-b - d ** 0.5) / (2 * a)} y
{(-b + d ** 0.5) / (2 * a)}"
)

if __name__ == "__main__":
main()

También se podrían utilizar condiciones anidadas:

def main():
print("ECUACIÓN A X² + B X + C = 0")
a = float(input("Escriba el valor del coeficiente a: "))
b = float(input("Escriba el valor del coeficiente b: "))
c = float(input("Escriba el valor del coeficiente c: "))

if a == b == c == 0:
print("Todos los números son solución.")
elif a == b == 0:
print("La ecuación no tiene solución.")
elif a == 0:
print(f"La ecuación tiene una solución: {- c / b}")
else:
d = b * b - 4 * a * c
if d < 0:
print("La ecuación no tiene solución real.")
elif d == 0:
print(f"La ecuación tiene una solución: {- b / (2 * a)}")
www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 13/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

else:
print(
f"La ecuación tiene dos soluciones: {(-b - d ** 0.5) / (2 *
a)} y {(-b + d ** 0.5) / (2 * a)}"
)

if __name__ == "__main__":
main()

MPTC
if ... elif ... else ... 9
22
def main():
print("CÁLCULO DE ÁREAS")
print("Elija una figura geométrica:")
print("a) Triángulo")
print("b) Círculo")
respuesta = input("¿Qué figura quiere calcular (Escriba T o C)? ")

if respuesta == "T" or respuesta == "t":


base = float(input("Escriba la base: "))
altura = float(input("Escriba la altura: "))
print(
f"Un triángulo de base {base} y altura {altura} tiene un área de
{base * altura / 2}"
)
elif respuesta == "C" or respuesta == "c":
r = float(input("Escriba el radio: "))
print(f"Un círculo de radio {r} tiene un área de {3.141592 * r * r}")

if __name__ == "__main__":
main()

MPTC
if ... elif ... else ... - 10
23
El siguiente programa escribe el resultado sin separadores y sea cual sea su valor:

print("CONVERTIDOR DE CM A KM, M Y CM")


centimetros = int(input("Escriba una distancia en centímetros: "))

kilometros = centimetros // 100000


www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 14/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

metros = centimetros % 100000 // 100


resto = centimetros % 100

print(f"{centimetros} cm son {kilometros} km {metros} m {resto} cm")

El siguiente programa escribe el resultado sin separadores, escribiendo únicamente los valores
distintos de cero:

print("CONVERTIDOR DE CM A KM, M Y CM")


centimetros = int(input("Escriba una distancia en centímetros: "))

kilometros = centimetros // 100000


metros = centimetros % 100000 // 100
resto = centimetros % 100

print(f"{centimetros} cm son ", end="")


if kilometros:
print(f"{kilometros} km ", end="")
if metros:
print(f"{metros} m ", end="")
if centimetros == 0 or resto:
print(resto, "cm")

El siguiente programa escribe el resultado con comas como separadores, escribiendo únicamente
los valores distintos de cero:

print("CONVERTIDOR DE CM A KM, M Y CM")


centimetros = int(input("Escriba una distancia en centímetros: "))

kilometros = centimetros // 100000


metros = centimetros % 100000 // 100
resto = centimetros % 100

print(f"{centimetros} cm son ", end="")


if kilometros:
if metros or resto:
print(f"{kilometros} km ", end="")
else:
print(f"{kilometros} km ")
if metros:
if resto:
print(f"{metros} m ", end="")
else:
print(f"{metros} m ")
www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 15/16
14/10/2019 Soluciones. if... elif... else... Python. Bartolomé Sintes Marco. www.mclibre.org

if centimetros == 0 or resto:
print(resto, "cm")

El siguiente programa escribe el resultado con comas y la conjunción "y" como separadores,
escribiendo únicamente los valores distintos de cero y teniendo en cuenta el caso de 1 cm (escribe la
respuesta en singular):

print("CONVERTIDOR DE CM A KM, M Y CM")


centimetros = int(input("Escriba una distancia en centímetros: "))

kilometros = centimetros // 100000


metros = centimetros % 100000 // 100
resto = centimetros % 100

if centimetros < 0:
print("No se admiten valores negativos")
elif centimetros == 1:
print("1 cm es 1 cm")
else:
print(f"{centimetros} cm son ", end="")
if kilometros:
if (metros and resto == 0) or (metros == 0 and resto):
print(f"{kilometros} km y ", end="")
elif metros or resto:
print(f"{kilometros} km, ", end="")
else:
print(f"{kilometros} km")
if metros:
if resto:
print(f"{metros} m y ", end="")
else:
print(f"{metros} m")
if centimetros == 0 or resto:
print(resto, "cm")

Última modificación de esta página: 21 de febrero de 2018

Esta página forma parte del curso Introducción a la programación con Python por Bartolomé
Sintes Marco
que se distribuye bajo una Licencia Creative Commons Reconocimiento-CompartirIgual 4.0
Internacional (CC BY-SA 4.0).

www.mclibre.org/consultar/python/ejercicios/ej-if-else-soluciones.html 16/16
14/10/2019 Ejercicios. Operaciones aritméticas elementales. Python. Bartolomé Sintes Marco. www.mclibre.org

Variables, Entrada y Salida y Operaciones


aritméticas elementales - Ejercicios
Estos ejercicios corresponden a lo explicado en las lecciones Operaciones aritméticas elementales,
Variables, Salida por pantalla y Entrada por teclado.
Se pueden consultar unas posibles soluciones.

MPTC
Operaciones aritméticas - 1
1
Escriba un programa que pida dos números y que escriba su media aritmética.
Se recuerda que la media aritmética de dos números es la suma de ambos números dividida por 2.

CÁLCULO DE LA MEDIA DE DOS NÚMEROS


Escriba un número: 100
Escriba otro número: 5
La media aritmética de 100.0 y 5.0 es 52.5
CÁLCULO DE LA MEDIA DE DOS NÚMEROS
Escriba un número: 5.5
Escriba otro número: 8
La media aritmética de 5.5 y 8.0 es 6.75

MPTC
Operaciones aritméticas - 2
2
Escriba un programa que pida el peso (en kilogramos) y la altura (en metros) de una persona y que
calcule su índice de masa corporal (imc).

Se recuerda que el imc se calcula con la fórmula imc = peso / altura 2

CÁLCULO DEL ÍNDICE DE MASA CORPORAL (IMC)


¿Cuánto pesa? 78
¿Cuánto mide en metros? 1.73
Su imc es 26.1
Un ímc muy alto indica obesidad. Los valores normales de imc están entre 20 y
25,
pero esos límites dependen de la edad, del sexo, de la constitución física,
etc.

Operaciones aritméticas - 3

www.mclibre.org/consultar/python/ejercicios/ej-variables.html 1/4
14/10/2019 Ejercicios. Operaciones aritméticas elementales. Python. Bartolomé Sintes Marco. www.mclibre.org

Si el apartado 1 le resulta demasiado difícil, resuelva primero los apartados 2 y 3 e intente de


nuevo resolver el apartado 1. Si resuelve sin problemas el apartado 1, no es necesario que haga los
apartados 2 y 3.

MPTC
3-1. Pies y pulgadas
3
Escriba un programa que pida una distancia en pies y pulgadas y que escriba esa distancia en
centímetros.
Se recuerda que un pie son doce pulgadas y una pulgada son 2,54 cm.

CONVERTIDOR DE PIES Y PULGADAS A CENTÍMETROS


Escriba una cantidad de pies: 4
Escriba una cantidad de pulgadas: 9
4 pies y 9 pulgadas son 144.78 cm

MPTC
3-2. Pulgadas
4
Escriba un programa que pida una distancia en pulgadas y que escriba esa distancia en centímetros.
Se recuerda que una pulgada son 2,54 cm.

CONVERTIDOR DE PULGADAS A CENTÍMETROS


Escriba una cantidad de pulgadas: 9
9 pulgadas son 22.86 cm

MPTC
3-3. Pies
5
Escriba un programa que pida una distancia en pies y que escriba esa distancia en centímetros.
Se recuerda que un pie son doce pulgadas y una pulgada son 2,54 cm.

CONVERTIDOR DE PIES A CENTÍMETROS


Escriba una cantidad de pies: 4
4 pies son 121.92 cm

MPTC
Operaciones aritméticas - 4
6
Escriba un programa que pida una temperatura en grados Celsius y que escriba esa temperatura en
grados Fahrenheit.
Se recuerda que la relación entre grados Celsius (C) y grados Fahrenheit (F) es la siguiente: F = 1,8
* C + 32

CONVERTIDOR DE GRADOS CELSIUS A GRADOS FAHRENHEIT


Escriba una temperatura en grados Celsius: 36.5
36.5 ºC son 97.7 ºF

www.mclibre.org/consultar/python/ejercicios/ej-variables.html 2/4
14/10/2019 Ejercicios. Operaciones aritméticas elementales. Python. Bartolomé Sintes Marco. www.mclibre.org

MPTC
Operaciones aritméticas - 5
7
Escriba un programa que pida una temperatura en grados Fahrenheit y que escriba esa temperatura
en grados Celsius.
Se recuerda que la relación entre grados Celsius (C) y grados Fahrenheit (F) es la siguiente: C = (F -
32) / 1,8

CONVERTIDOR DE GRADOS FAHRENHEIT A GRADOS CELSIUS


Escriba una temperatura en grados Fahrenheit: 451
451.0 ºF son 232.8 ºC

MPTC
Operaciones aritméticas - 6
8
Escriba un programa que pida una cantidad de segundos y que escriba cuántos minutos y segundos
son.
Ayuda
CONVERTIDOR DE SEGUNDOS A MINUTOS
Escriba una cantidad de segundos: 1234
1234 segundos son 20 minutos y 34 segundos

CONVERTIDOR DE SEGUNDOS A MINUTOS


Escriba una cantidad de segundos: 120
120 segundos son 2 minutos y 0 segundos

MPTC
Operaciones aritméticas - 7
9
Escriba un programa que pida una cantidad de segundos y que escriba cuántas horas, minutos y
segundos son.
Ayuda
CONVERTIDOR DE SEGUNDOS A HORAS Y MINUTOS
Escriba una cantidad de segundos: 12345
12345 segundos son 3 horas, 25 minutos y 45 segundos

MPTC
Operaciones aritméticas - 8
10
Escriba un programa que pida una cantidad y que escriba cuántas gruesas, docenas y unidades son.
Se recuerda que una gruesa son doce docenas.
Ayuda
CONVERTIDOR A GRUESAS Y DOCENAS
Escriba una cantidad (entera): 12345
12345 unidades son 85 gruesas, 8 docenas y 9 unidades

www.mclibre.org/consultar/python/ejercicios/ej-variables.html 3/4
14/10/2019 Ejercicios. Operaciones aritméticas elementales. Python. Bartolomé Sintes Marco. www.mclibre.org

Más ejercicios
Ejercicios de exámenes anteriores

Última modificación de esta página: 13 de febrero de 2019

Esta página forma parte del curso Introducción a la programación con Python por Bartolomé
Sintes Marco
que se distribuye bajo una Licencia Creative Commons Reconocimiento-CompartirIgual 4.0
Internacional (CC BY-SA 4.0).

www.mclibre.org/consultar/python/ejercicios/ej-variables.html 4/4
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

if ... elif ... else ... - Ejercicios


Estos ejercicios corresponden a lo explicado en la lección If ... elif ... else ....
Se pueden consultar unas posibles soluciones.

MPTC
if ... elif ... else ... - 1
11
Escriba un programa que pida dos números enteros y que calcule su división, escribiendo si la
división es exacta o no.

DIVISOR DE NÚMEROS
Escriba el dividendo: 14
Escriba el divisor: 5
La división no es exacta. Cociente: 2 Resto: 4
DIVISOR DE NÚMEROS
Escriba el dividendo: 20
Escriba el divisor: 4
La división es exacta. Cociente: 5

MPTC
1-2 - División por cero
12
Mejore el programa anterior haciendo que tenga en cuenta que no se puede dividir por cero:

DIVISOR DE NÚMEROS
Escriba el dividendo: 20
Escriba el divisor: 0
No se puede dividir por cero.

MPTC
if ... elif ... else ... - 2
13
Escriba un programa que pida dos números y que conteste cuál es el menor y cuál el mayor o que
escriba que son iguales.

COMPARADOR DE NÚMEROS
Escriba un número: 23
Escriba otro número: 14.5
Menor: 14.5; Mayor: 23.0
COMPARADOR DE NÚMEROS
Escriba un número: 5.0
Escriba otro número: 5
Los dos números son iguales.

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 1/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

MPTC
if ... elif ... else ... - 3
14
Escriba un programa que pida el año actual y un año cualquiera y que escriba cuántos años han
pasado desde ese año o cuántos años faltan para llegar a ese año.

COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 2024
Para llegar al año 2020 faltan 5 años.
COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 1997
Desde el año 1997 han pasado 22 años.
COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 2019
¡Son el mismo año!

MPTC
3-2 - Diferencia de un año
15
Mejore el programa anterior haciendo que cuando la diferencia sea exactamente un año, escriba la
frase en singular:

COMPARADOR DE AÑOS
¿En qué año estamos?: 2019
Escriba un año cualquiera: 2020
Para llegar al año 2016 falta 1 año.

MPTC
if ... elif ... else ... - 4
16
Escriba un programa que pida dos números enteros y que escriba si el mayor es múltiplo del menor.

COMPARADOR DE MÚLTIPLOS
Escriba un número: 48
Escriba otro número: 6
48 es múltiplo de 6.
COMPARADOR DE MÚLTIPLOS
Escriba un número: 6
Escriba otro número: 48
48 es múltiplo de 6.
COMPARADOR DE MÚLTIPLOS
Escriba un número: 6

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 2/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Escriba otro número: 49


49 no es múltiplo de 6.
COMPARADOR DE MÚLTIPLOS
Escriba un número: 6
Escriba otro número: 6
6 es múltiplo de 6.

MPTC
4-2 - Valores negativos o nulos
17
Mejore el programa anterior haciendo que el programa avise cuando se escriben valores negativos o
nulos.

COMPARADOR DE MÚLTIPLOS
Escriba un número: 5
Escriba otro número: -10
Lo siento, este programa no admite valores negativos.

COMPARADOR DE MÚLTIPLOS
Escriba un número: 0
Escriba otro número: 5
Lo siento, este programa no admite valores nulos.

MPTC
if ... elif ... else ... - 5
18
Escriba un programa que pida tres números y que escriba si son los tres iguales, si hay dos iguales o
si son los tres distintos.

COMPARADOR DE TRES NÚMEROS


Escriba un número: 6
Escriba otro número: 6
Escriba otro número más: 6
Ha escrito tres veces el mismo número.

COMPARADOR DE TRES NÚMEROS


Escriba un número: 6
Escriba otro número: 6.5
Escriba otro número más: 6
Ha escrito uno de los números dos veces.
COMPARADOR DE TRES NÚMEROS
Escriba un número: 4.3
Escriba otro número: 5.14
Escriba otro número más: -6
Los tres números que ha escrito son distintos.

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 3/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

MPTC
if ... elif ... else ... - 6
19
Escriba un programa que pida un año y que escriba si es bisiesto o no.
Se recuerda que los años bisiestos son múltiplos de 4, pero los múltiplos de 100 no lo son, aunque
los múltiplos de 400 sí.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 2012
El año 2012 es un año bisiesto porque es múltiplo de 4 sin ser múltiplo de
100.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 2010
El año 2010 no es un año bisiesto.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 2000
El año 2000 es un año bisiesto porque es múltiplo de 400.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 1900
El año 1900 no es un año bisiesto porque es múltiplo de 100 sin ser múltiplo
de 400.

MPTC
if ... elif ... else ... - 7
20
Escriba un programa que pida los coeficientes de una ecuación de primer grado (a x + b = 0) y
escriba la solución.
Se recuerda que una ecuación de primer grado puede no tener solución, tener una solución única, o
que todos los números sean solución. Se recuerda que la fórmula de las soluciones es x = -b / a
Estos son algunos ejemplos de posibles respuestas (el orden de los ejemplos no tiene por qué
corresponder con el orden de las condiciones):

ECUACIÓN A X + B = 0
Escriba el valor del coeficiente a: 0
Escriba el valor del coeficiente b: 3
La ecuación no tiene solución.

ECUACIÓN A X + B = 0
Escriba el valor del coeficiente a: 4.2
Escriba el valor del coeficiente b: 21
La ecuación tiene una solución: -5.0

ECUACIÓN A X + B = 0
Escriba el valor del coeficiente a: 0

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 4/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Escriba el valor del coeficiente b: 0


Todos los números son solución.

MPTC
if ... elif ... else ... - 8
21
Escriba un programa que pida los coeficientes de una ecuación de segundo grado (a x² + b x + c = 0)
y escriba la solución.
Se recuerda que una ecuación de segundo grado puede no tener solución, tener una solución única,
tener dos soluciones o que todos los números sean solución. Se recuerda que la fórmula de las
soluciones cuando hay dos soluciones es x = (-b ± √(b2-4ac) ) / (2a)
Estos son algunos ejemplos de posibles respuestas (el orden de los ejemplos no tiene por qué
corresponder con el orden de las condiciones).

a b c Solución
1 -2 2 Sin solución real
2 -7 3 Dos soluciones: 0.5 y 3.0
1 2 1 Una solución: -1.0
0 0 5 Sin solución
0 0 0 Todos los números son solución
0 3 2 Una solución: -0.666...

ECUACIÓN A X² + B X + C = 0
Escriba el valor del coeficiente a: 2
Escriba el valor del coeficiente b: -7
Escriba el valor del coeficiente c: 3
La ecuación tiene dos soluciones: 3.0 y 0.5

MPTC
if ... elif ... else ... - 9
22
Escriba un programa que pregunte primero si se quiere calcular el área de un triángulo o la de un
círculo. Si se contesta que se quiere calcular el área de un triángulo (escribiendo T o t), el programa
tiene que pedir entonces la base y la altura y escribir el área. Si se contesta que se quiere calcular el
área de un círculo (escribiendo C o c), el programa tiene que pedir entonces el radio y escribir el
área.
Se recuerda que el área de un triángulo es base por altura dividido por 2 y que el área de un círculo
es Pi (aproximadamente 3,141592) por el radio al cuadrado.
Nota: Utilice como valor de pi el valor 3.141592.

CÁLCULO DE ÁREAS
Elija una figura geométrica:
a) Triángulo
b) Círculo
¿Qué figura quiere calcular (Escriba T o C)? T
www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 5/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Escriba la base: 3
Escriba la altura: 5.5
Un triángulo de base 3.0 y altura 5.0 tiene un área de 8.25
CÁLCULO DE ÁREAS
Elija una figura geométrica:
a) Triángulo
b) Círculo
¿Qué figura quiere calcular (Escriba T o C)? C
Escriba el radio: 2
Un círculo de radio 2.0 tiene un área de 12.566370614359172

MPTC
if ... elif ... else ... - 10
23
Escriba un programa que pida una distancia en centímetros y que escriba esa distancia en
kilómetros, metros y centímetros (escribiendo todas las unidades).

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 0
Escriba una distancia mayor que cero.
CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 43210
43210 centímetros son 0 km 432 m 10 cm.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 56
56 centímetros son 0 km 0 m 56 cm.

MPTC
10-2 - Sin unidades innecesarias
24
Mejore el programa anterior haciendo que no se escriban las unidades innecesarias (cuando el valor
es cero).

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100
100 centímetros son 1 m.
CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100001
100001 centímetros son 1 km 1 cm.

10-3 - Con comas

Mejore el programa anterior haciendo que se escriban comas después de las unidades (excepto en
la última).

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 6/7
14/10/2019 Ejercicios. if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100510
100510 centímetros son 1 km, 5 m, 10cm.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100100
100100 centímetros son 1 km, 1 m.

10-4 - Con comas e "y"

Mejore el programa anterior haciendo que se escriban la conjunción "y" antes de la última unidad.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100510
100510 centímetros son 1 km, 5 m y 10cm.

CONVERTIDOR DE CM A KM, M Y CM
Escriba una distancia en centímetros: 100100
100100 centímetros son 1 km y 1 m.

Más ejercicios
Ejercicios de exámenes anteriores

Última modificación de esta página: 7 de marzo de 2019

Esta página forma parte del curso Introducción a la programación con Python por Bartolomé
Sintes Marco
que se distribuye bajo una Licencia Creative Commons Reconocimiento-CompartirIgual 4.0
Internacional (CC BY-SA 4.0).

www.mclibre.org/consultar/python/ejercicios/ej-if-else.html 7/7
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

if ... elif ... else ...


En esta lección se trata la estructura de control if ... elif ... else ...: Estas construcciones permiten
condicionar la ejecución de uno o varios bloques de sentencias al cumplimiento de una o varias
condiciones.

Sentencias condicionales: if ...


La estructura de control if ... permite que un programa ejecute unas instrucciones cuando se cumplan
una condición. En inglés "if" significa "si" (condición).

Sintaxis de la sentencia condicional if ...

La sintaxis de la construcción if es la siguiente:

if condición:
aquí van las órdenes que se ejecutan si la condición es cierta
y que pueden ocupar varias líneas

La ejecución de esta construcción es la siguiente:


La condición se evalúa siempre.
Si el resultado es True se ejecuta el bloque de sentencias
Si el resultado es False no se ejecuta el bloque de sentencias.

La primera línea contiene la condición a evaluar y es una expresión lógica. Esta línea debe terminar
siempre por dos puntos (:).
A continuación viene el bloque de órdenes que se ejecutan cuando la condición se cumple (es decir,
cuando la condición es verdadera). Es importante señalar que este bloque debe ir sangrado, puesto que
Python utiliza el sangrado para reconocer las líneas que forman un bloque de instrucciones. El sangrado
que se suele utilizar en Python es de cuatro espacios, pero se pueden utilizar más o menos espacios. Al
escribir dos puntos (:) al final de una línea, el editor sangrará automáticamente las líneas siguientes.
Para terminar un bloque, basta con volver al principio de la línea.

Diagrama de flujo de la sentencia condicional condicional if ...

El diagrama de flujo siguiente muestra la ejecución de una sentencia if ...:

www.mclibre.org/consultar/python/lecciones/python-if-else.html 1/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

DIAGRAMA DE FLUJO: SENTENCIA IF


Haga clic en los botones de avance y retroceso
para ver la ejecución paso a paso

INICIO

False True
CONDICIÓN

BLOQUE

FIN

Programas de ejemplo con sentencias condicionales if ...

Veamos un ejemplo. El programa siguiente pide un número positivos al usuario y almacena la respuesta
en la variable "numero". Después comprueba si el número es negativo. Si lo es, el programa avisa que
no era eso lo que se había pedido. Finalmente, el programa imprime siempre el valor introducido por el
usuario. A continuación se pueden ver dos ejecuciones paso a paso de ese programa. En la primera el
usuario escribe un valor negativo y en la segunda el usuario escribe un valor positivo:

Ejemplo de if ... 1

numero = int(input("Escriba un número Escriba un número positivo: -5


positivo: ")) ¡Le he dicho que escriba un número
if numero < 0: positivo!
print("¡Le he dicho que escriba un Ha escrito el número -5
número positivo!")
print(f"Ha escrito el número
{numero}")

Ejemplo de if ... 2

numero = int(input("Escriba un número Escriba un número positivo: 5

www.mclibre.org/consultar/python/lecciones/python-if-else.html 2/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

positivo: ")) Ha escrito el número 5


if numero < 0:
print("¡Le he dicho que escriba un
número positivo!")
print(f"Ha escrito el número
{numero}")

Bifurcaciones: if ... else ...


La estructura de control if ... else ... permite que un programa ejecute unas instrucciones cuando se
cumple una condición y otras instrucciones cuando no se cumple esa condición. En inglés "if" significa
"si" (condición) y "else" significa "si no". La orden en Python se escribe así:

Sintaxis de la sentencia condicional if ... else ...

La sintaxis de la construcción if ... else ... es la siguiente:

if condición:
aquí van las órdenes que se ejecutan si la condición es cierta
y que pueden ocupar varias líneas
else:
y aquí van las órdenes que se ejecutan si la condición es
falsa y que también pueden ocupar varias líneas

La ejecución de esta construcción es la siguiente:


La condición se evalúa siempre.
Si el resultado es True se ejecuta solamente el bloque de sentencias 1
Si el resultado es False se ejecuta solamente el bloque de sentencias 2.

La primera línea contiene la condición a evaluar. Esta línea debe terminar siempre por dos puntos (:).
A continuación viene el bloque de órdenes que se ejecutan cuando la condición se cumple (es decir,
cuando la condición es verdadera). Es importante señalar que este bloque debe ir sangrado, puesto que
Python utiliza el sangrado para reconocer las líneas que forman un bloque de instrucciones. El sangrado
que se suele utilizar en Python es de cuatro espacios, pero se pueden utilizar más o menos espacios. Al
escribir dos puntos (:) al final de una línea, IDLE sangrará automáticamente las líneas siguientes. Para
terminar un bloque, basta con volver al principio de la línea.
Después viene la línea con la orden else, que indica a Python que el bloque que viene a continuación se
tiene que ejecutar cuando la condición no se cumpla (es decir, cuando sea falsa). Esta línea también
debe terminar siempre por dos puntos (:). La línea con la orden else no debe incluir nada más que el else
y los dos puntos.
En último lugar está el bloque de instrucciones sangrado que corresponde al else.

Diagrama de flujo de la sentencia condicional if ... else ...

www.mclibre.org/consultar/python/lecciones/python-if-else.html 3/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

El diagrama de flujo siguiente muestra la ejecución de una sentencia if ... else ...:

DIAGRAMA DE FLUJO: SENTENCIA IF ... ELSE ...


Haga clic en los botones de avance y retroceso
para ver la ejecución paso a paso

INICIO

False True
CONDICIÓN

BLOQUE 2 BLOQUE 1

FIN

Programas de ejemplo con sentencias condicionales if ... else ...

Veamos un ejemplo. El programa siguiente pregunta la edad al usuario y almacena la respuesta en la


variable "edad". Después comprueba si la edad es inferior a 18 años. Si esta comparación es cierta, el
programa escribe que es menor de edad y si es falsa escribe que es mayor de edad. Finalmente el
programa siempre se despide, ya que la última instrucción está fuera de cualquier bloque y por tanto se
ejecuta siempre. A continuación se pueden ver dos ejecuciones paso a paso de ese programa:

Ejemplo de if ... else ... 1

edad = int(input("¿Cuántos años tiene? ¿Cuántos años tiene? 17


")) Es usted menor de edad
if edad < 18: ¡Hasta la próxima!
print("Es usted menor de edad")
else:
print("Es usted mayor de edad")
print("¡Hasta la próxima!")

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso
situados abajo a la derecha

Ejemplo de if ... else ... 2


www.mclibre.org/consultar/python/lecciones/python-if-else.html 4/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

edad = int(input("¿Cuántos años tiene? ¿Cuántos años tiene? 25


")) Es usted mayor de edad
if edad < 18: ¡Hasta la próxima!
print("Es usted menor de edad")
else:
print("Es usted mayor de edad")
print("¡Hasta la próxima!")

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso
situados abajo a la derecha.

Aunque no es aconsejable, en vez de un bloque if ... else ... se podría escribir un programa con dos
bloques if ...

edad = int(input("¿Cuántos años tiene? "))


if edad < 18:
print("Es usted menor de edad")
if edad >= 18:
print("Es usted mayor de edad")
print("¡Hasta la próxima!")

Es mejor no hacerlo así por dos motivos:


al poner dos bloques if estamos obligando a Python a evaluar siempre las dos condiciones, mientras
que en un bloque if ... else ... sólo se evalúa una condición. En un programa sencillo la diferencia no
es apreciable, pero en programas que ejecutan muchas comparaciones, el impacto puede ser
apreciable.
utilizando else nos ahorramos escribir una condición (además, escribiendo la condición nos podemos
equivocar, pero escribiendo else no).

Si por algún motivo no se quisiera ejecutar ninguna orden en alguno de los bloques, el bloque de
órdenes debe contener al menos la orden pass (esta orden le dice a Python que no tiene que hacer
nada).

edad = int(input("¿Cuántos años tiene? "))


if edad < 120:
pass
else:
print("¡No me lo creo!")
print(f"Usted dice que tiene {edad} años.")

Evidentemente este programa podría simplificarse cambiando la desigualdad. Era sólo un ejemplo para
mostrar cómo se utiliza la orden pass.

edad = int(input("¿Cuántos años tiene? "))


if edad >= 120:

www.mclibre.org/consultar/python/lecciones/python-if-else.html 5/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

print("¡No me lo creo!")
print(f"Usted dice que tiene {edad} años.")

Sangrado de los bloques


Un bloque de instrucciones puede contener varias instrucciones. Todas las instrucciones del bloque
deben tener el mismo sangrado:

edad = int(input("¿Cuántos años tiene? "))


if edad < 18:
print("Es usted menor de edad")
print("Recuerde que está en la edad de aprender")
else:
print("Es usted mayor de edad")
print("Recuerde que debe seguir aprendiendo")
print("¡Hasta la próxima!")

Se aconseja utilizar siempre el mismo número de espacios en el sangrado, aunque Python permite que
cada bloque tenga un número distinto. El siguiente programa es correcto:

edad = int(input("¿Cuántos años tiene? "))


if edad < 18:
print("Es usted menor de edad")
print("Recuerde que está en la edad de aprender")
else:
print("Es usted mayor de edad")
print("Recuerde que debe seguir aprendiendo")
print("¡Hasta la próxima!")

Lo que no se permite es que en un mismo bloque haya instrucciones con distintos sangrados.
Dependiendo del orden de los sangrados, el mensaje de error al intentar ejecutar el programa será
diferente:
En este primer caso, la primera instrucción determina el sangrado de ese bloque, por lo que al
encontrar la segunda instrucción, con un sangrado mayor, se produce el error "unexpected indent"
(sangrado inesperado).

edad = int(input("¿Cuántos años


tiene? "))
if edad < 18:
print("Es usted menor de edad")
print("Recuerde que está en
la edad de aprender")
else:
print("Es usted mayor de edad")
print("Recuerde que debe seguir
www.mclibre.org/consultar/python/lecciones/python-if-else.html 6/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

aprendiendo")
print("¡Hasta la próxima!")

En este segundo caso, la primera instrucción determina el sangrado de ese bloque, por lo que al
encontrar la segunda instrucción, con un sangrado menor, Python entiende que esa instrucción
pertenece a otro bloque, pero como no hay ningún bloque con ese nivel de sangrado, se produce el
error "unindent does not match any outer indentation level" (el sangrado no coincide con el de ningún
nivel superior).

edad = int(input("¿Cuántos años


tiene? "))
if edad < 18:
print("Es usted menor de
edad")
print("Recuerde que está en la
edad de aprender")
else:
print("Es usted mayor de edad")
print("Recuerde que debe seguir
aprendiendo")
print("¡Hasta la próxima!")

En este tercer caso, como la segunda instrucción no tiene sangrado, Python entiende que la
bifurcación if ha terminado, por lo que al encontrar un else sin su if correspondiente se produce el
error "invalid syntax" (sintaxis no válida).

edad = int(input("¿Cuántos años


tiene? "))
if edad < 18:
print("Es usted menor de edad")
print("Recuerde que está en la edad
de aprender")
else:
print("Es usted mayor de edad")
print("Recuerde que debe seguir
aprendiendo")
print("¡Hasta la próxima!")

Sentencias condicionales anidadas


Una sentencia condicional puede contener a su vez otra sentencia anidada.
Por ejemplo, el programa siguiente "adivina" el número pensado por el usuario:

Ejemplo de sentencias condicionales anidadas

www.mclibre.org/consultar/python/lecciones/python-if-else.html 7/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

print("Piense un número de 1 a 4.") Piense un número de 1 a 4.


print("Conteste S (sí) o N (no) a mis Conteste S (sí) o N (no) a mis
preguntas.") preguntas.
primera = input("¿El número pensado es ¿El número pensado es mayor que 2? S
mayor que 2? ") ¿El número pensado es mayor que 3? N
if primera == "S": El número pensado es 3
segunda = input("¿El número ¡Hasta la próxima!
pensado es mayor que 3? ")
if segunda == "S":
print("El número pensado es
4.")
else:
print("El número pensado es
3")
else:
segunda = input("¿El número
pensado es mayor que 1? ")
if segunda == "S":
print("El número pensado es
2.")
Se pueden anidar tantas sentencias condicionales como se desee.

Más de dos alternativas: if ... elif ... else ...


La construcción if ... else ... se puede extender añadiendo la instrucción elif:
La estructura de control if ... elif ... else ... permite encadenar varias condiciones. elif es una contracción
de else if. La orden en Python se escribe así:

Sintaxis de la sentencia condicional if ... elif ... else ...

La sintaxis de la construcción if ... elif ... else ... es la siguiente:

if condición_1:
bloque 1
elif condición_2:
bloque 2
else:
bloque 3

Si se cumple la condición 1, se ejecuta el bloque 1


Si no se cumple la condición 1 pero sí que se cumple la condición 2, se ejecuta el bloque 2
Si no se cumplen ni la condición 1 ni la condición 2, se ejecuta el bloque 3.
Esta estructura es equivalente a la siguiente estructura de if ... else ... anidados:

www.mclibre.org/consultar/python/lecciones/python-if-else.html 8/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

if condición_1:
bloque 1
else:
if condición_2:
bloque 2
else:
bloque 3

Se pueden escribir tantos bloques elif como sean necesarios. El bloque else (que es opcional) se ejecuta
si no se cumple ninguna de las condiciones anteriores.

Diagrama de flujo de la sentencia condicional if ... elif ... else ...

El diagrama de flujo siguiente muestra la ejecución de una sentencia if ... elif ... else ...:

DIAGRAMA DE FLUJO: SENTENCIA IF ELIF ELSE


Haga clic en los botones de avance y retroceso
para ver la ejecución paso a paso

INICIO

False True
CONDICIÓN 1

False True
CONDICIÓN 2 BLOQUE 1

BLOQUE 3 BLOQUE 2

FIN

En las estructuras if ... elif ... else ... el orden en que se escriben los casos es importante y, a menudo, se
pueden simplificar las condiciones ordenando adecuadamente los casos.
Podemos distinguir dos tipos de situaciones:
1. Cuando los casos son mutuamente excluyentes.

www.mclibre.org/consultar/python/lecciones/python-if-else.html 9/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Consideremos un programa que pide la edad y en función del valor recibido da un mensaje diferente.
Podemos distinguir, por ejemplo, tres situaciones:
si el valor es negativo, se trata de un error
si el valor está entre 0 y 17, se trata de un menor de edad
si el valor es superior o igual a 18, se trata de un menor de edad
Los casos son mutuamente excluyentes, ya que un valor sólo puede estar en uno de los casos.
Un posible programa es el siguiente:

edad = int(input("¿Cuántos años tiene? "))


if edad >= 18:
print("Es usted mayor de edad")
elif edad < 0:
print("No se puede tener una edad negativa")
else:
print("Es usted menor de edad")

El programa anterior funciona correctamente, pero los casos están desordenados. Es mejor
escribirlos en orden, para asegurarnos de no olvidar ninguna de las posibles situaciones. Por
ejemplo, podríamos escribirlos de menor a mayor edad, aunque eso obliga a escribir otras
condiciones:

edad = int(input("¿Cuántos años tiene? "))


if edad < 0:
print("No se puede tener una edad negativa")
elif edad >= 0 and edad < 18:
print("Es usted menor de edad")
else:
print("Es usted mayor de edad")

En el programa anterior se pueden simplificar las comparaciones:

edad = int(input("¿Cuántos años tiene? "))


if edad < 0:
print("No se puede tener una edad negativa")
elif edad < 18:
print("Es usted menor de edad")
else:
print("Es usted mayor de edad")

Estos dos programas son equivalentes porque en una estructura if ... elif .. else cuando se cumple
una de las comparaciones Python ya no evalúa las siguientes condiciones. En este caso, si el
programa tiene que comprobar la segunda comparación (la del elif), es porque no se ha cumplido
la primera (la del if). Y si no se ha cumplido la primera es que edad es mayor que 0, por lo que no
es necesario comprobarlo en la segunda condición.
Pero hay que tener cuidado, porque si los casos del programa anterior se ordenan al revés
manteniendo las condiciones, el programa no funcionaría como se espera, puesto que al escribir
un valor negativo mostraría el mensaje "Es usted menor de edad".
www.mclibre.org/consultar/python/lecciones/python-if-else.html 10/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

# Este programa no funciona correctamente


edad = int(input("¿Cuántos años tiene? "))
if edad < 18:
print("Es usted menor de edad")
elif edad < 0:
print("No se puede tener una edad negativa")
else:
print("Es usted mayor de edad")

2. Cuando unos casos incluyen a otros


Consideremos un programa que pide un valor y nos dice:
si es múltiplo de dos,
si es múltiplo de cuatro (y de dos)
si no es múltiplo de dos
Nota: El valor 0 se considerará múltiplo de 4 y de 2.
Los casos no son mutuamente excluyentes, puesto que los múltiplos de cuatro son también múltiplos
de dos.
El siguiente programa no sería correcto:

# Este programa no funciona correctamente


numero = int(input("Escriba un número: "))
if numero % 2 == 0:
print(f"{numero} es múltiplo de dos")
elif numero % 4 == 0:
print(f"{numero} es múltiplo de cuatro y de dos")
else:
print(f"{numero} no es múltiplo de dos")

El error de este programa es que si numero cumple la segunda condición, cumple también la
primera. Es decir, si numero es un múltiplo de cuatro, como también es múltiplo de dos, cumple la
primera condición y el programa ejecuta el primer bloque de instrucciones, sin llegar a comprobar
el resto de condiciones.
Una manera de corregir ese error es añadir en la primera condición (la de if) que numero no sea
múltiplo de cuatro.

numero = int(input("Escriba un número: "))


if numero % 2 == 0 and numero % 4 != 0:
print(f"{numero} es múltiplo de dos")
elif numero % 4 == 0:
print(f"{numero} es múltiplo de cuatro y de dos")
else:
print(f"{numero} no es múltiplo de dos")

También se podría haber escrito el siguiente programa:

www.mclibre.org/consultar/python/lecciones/python-if-else.html 11/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

numero = int(input("Escriba un número: "))


if numero % 2 == 0 and numero % 4 != 0:
print(f"{numero} es múltiplo de dos")
elif numero % 2 == 0:
print(f"{numero} es múltiplo de cuatro y de dos")
else:
print(f"{numero} no es múltiplo de dos")

Este programa funciona porque los múltiplos de cuatro también son múltiplos de dos y el
programa sólo evalúa la segunda condición (la de elif) si no se ha cumplido la primera.
Pero todavía podemos simplificar más el programa, ordenando de otra manera los casos:

numero = int(input("Escriba un número: "))


if numero % 4 == 0:
print(f"{numero} es múltiplo de cuatro y de dos")
elif numero % 2 == 0:
print(f"{numero} es múltiplo de dos")
else:
print(f"{numero} no es múltiplo de dos")

Este programa funciona correctamente ya que aunque la segunda condición (la de elif) no
distingue entre múltiplos de dos y de cuatro, si numero es un múltiplo de cuatro, el programa no
llega a evaluar la segunda condición porque se cumple la primera (la de if).
En general, el orden que permite simplificar más las expresiones suele ser considerar primero los
casos particulares y después los casos generales.

Si las condiciones if ... elif ... cubren todas las posibilidades, se puede no escribir el bloque else:

numero = int(input("Escriba un número: "))


if numero >= 0:
print("Ha escrito un número positivo")
elif numero < 0:
print("Ha escrito un número negativo")

Pero es más habitual sustituir el último bloque elif ... por un bloque else:

numero = int(input("Escriba un número: "))


if numero >= 0:
print("Ha escrito un número positivo")
else:
print("Ha escrito un número negativo")

Condiciones no booleanas
Dado que cualquier variable puede interpretarse como una variable booleana, si la condición es una
comparación con cero, podemos omitir la comparación.
www.mclibre.org/consultar/python/lecciones/python-if-else.html 12/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Por ejemplo, el programa siguiente:

numero = int(input("Escriba un número: "))


if numero % 2 != 0:
print(f"{numero} es impar")
else:
print(f"{numero} es par")

se podría escribir omitiendo la comparación:

numero = int(input("Escriba un número: "))


if numero % 2:
print(f"{numero} es impar")
else:
print(f"{numero} es par")

En este programa, si el número es impar, numero % 2 da como resultado 1. Y como el valor booleano de
un número diferente de cero es True (es decir, bool(1) es True), la condición se estaría cumpliendo.

Si la comparación es una igualdad, se puede utilizar el operador not. Por ejemplo, el programa siguiente:

numero = int(input("Escriba un número: "))


if numero % 2 == 0:
print(f"{numero} es par")
else:
print(f"{numero} es impar")

se podría escribir omitiendo la comparación:

numero = int(input("Escriba un número: "))


if not numero % 2:
print(f"{numero} es par")
else:
print(f"{numero} es impar")

En este programa, si el número es par, numero % 2 da como resultado 0. El valor booleano de cero es
False (es decir, bool(0) es False), pero al negarse con not, la condición se estaría cumpliendo (ya que
not False es True.

Cuando se está aprendiendo a programar, esta notación puede resultar un poco críptica, por lo que se
recomienda empezar escribiendo las comparaciones completas. Más adelante, cuando nos hayamos
familiarizado con las expresiones lógicas, nos resultará más natural utilizarla.

Última modificación de esta página: 15 de febrero de 2019

Esta página forma parte del curso Introducción a la programación con Python por Bartolomé Sintes
www.mclibre.org/consultar/python/lecciones/python-if-else.html 13/14
14/10/2019 if ... elif ... else ... Python. Bartolomé Sintes Marco. www.mclibre.org

Marco
que se distribuye bajo una Licencia Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional
(CC BY-SA 4.0).

www.mclibre.org/consultar/python/lecciones/python-if-else.html 14/14

S-ar putea să vă placă și