Documente Academic
Documente Profesional
Documente Cultură
org
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
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.
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í.
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
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.
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.
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
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
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
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: "))
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()
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()
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
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 __name__ == "__main__":
main()
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: "))
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()
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
if __name__ == "__main__":
main()
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 __name__ == "__main__":
main()
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
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 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 __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 __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
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()
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: "))
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
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()
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 __name__ == "__main__":
main()
MPTC
if ... elif ... else ... - 10
23
El siguiente programa escribe el resultado sin separadores y sea cual sea su valor:
El siguiente programa escribe el resultado sin separadores, escribiendo únicamente los valores
distintos de cero:
El siguiente programa escribe el resultado con comas como separadores, escribiendo únicamente
los valores distintos de cero:
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):
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")
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
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.
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).
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
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.
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.
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.
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
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
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
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
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
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
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.
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í.
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
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.
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.
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
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 condición:
aquí van las órdenes que se ejecutan si la condición es cierta
y que pueden ocupar varias líneas
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.
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
INICIO
False True
CONDICIÓN
BLOQUE
FIN
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
Ejemplo de if ... 2
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
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 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.
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 ...:
INICIO
False True
CONDICIÓN
BLOQUE 2 BLOQUE 1
FIN
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso
situados abajo a la derecha
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 ...
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).
Evidentemente este programa podría simplificarse cambiando la desigualdad. Era sólo un ejemplo para
mostrar cómo se utiliza la orden pass.
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.")
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:
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).
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).
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).
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
if condición_1:
bloque 1
elif condición_2:
bloque 2
else:
bloque 3
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.
El diagrama de flujo siguiente muestra la ejecución de una sentencia if ... elif ... else ...:
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:
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:
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
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.
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
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:
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:
Pero es más habitual sustituir el último bloque elif ... por un bloque else:
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
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:
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.
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