Ejercicios: El Centro de Cálculo
Pon a prueba tu lógica y tus matemáticas.
Ejercicio 6.1: La Calculadora de Descuentos
Crea un script descuentos.py.
- Define una variable
precio = 100ydescuento = 0.2(20%). - Calcula el monto ahorrado (
precio * descuento). - Calcula el precio final (
precio - monto_ahorrado). - Imprime ambos valores con mensajes explicativos usando f-strings, como las que ya viste en el Cap. 4.
Pista 1: piensa en qué operación convierte un porcentaje en una cantidad de dinero concreta, sin necesidad de dividir entre 100.
Pista 2: multiplica el precio por el descuento para obtener el ahorro y muéstralo dentro de una f-string; la interpolación con
{}hace el resto.
Ejercicio 6.2: ¿Par o Impar? (Módulo)
El operador módulo % es más útil de lo que parece al principio. No divide: te dice lo que sobró de la división, y ese sobrante es información.
- Define un número cualquiera en una variable.
- Usa el módulo 2 (
numero % 2) para ver qué sobra.- Si sobra 0, es par.
- Si sobra 1, es impar.
- Imprime el resultado del módulo.
Pista 1: el resultado de
%es el residuo, no el cociente; compáralo con0usando==para decidir.Pista 2: un número es par cuando
numero % 2 == 0daTrue; cualquier otro residuo significa que es impar.
Ejercicio 6.3: El Portero Lógico
Estás programando el acceso a la zona de montacargas del almacén. Las reglas del inspector no son negociables:
- Debe medir más de
1.5metros. - O debe tener más de
12años de antigüedad certificada. - Y ADEMÁS, NO debe tener restricción médica activa.
Escribe la expresión lógica completa en una sola línea para:
altura = 1.6, antiguedad = 10, restriccion = False.
¿Pasa o no pasa?
Pista 1: traduce cada regla en una comparación booleana separada antes de combinarlas con
and/or.Pista 2: agrupa entre paréntesis las dos condiciones del “o” para que se resuelvan antes que el “y”, y niega la restricción con
not.
Ejercicio 6.4: Manipulación de Texto (in)
Crea una variable frase = "El veloz murciélago hindú comía feliz cardillo y kiwi". El operador in hace algo concreto y valioso: busca sin que tengas que recorrer la cadena letra por letra.
- Escribe un código que imprima
Truesi la palabra “murciélago” está en la frase. - Escribe un código que imprima
Truesi la palabra “manzana” NO está en la frase.
Pista 1:
infunciona directo sobre cadenas de texto, sin bucles ni índices manuales.Pista 2: usa
inpara comprobar si la primera palabra está en la frase, ynot inpara la segunda; ambos operadores funcionan directo sobre la cadena.
Ejercicio 6.5: Asignación Rápida
Empiezas con puntos = 10. Los operadores de asignación compuesta no son azúcar sintáctico caprichoso; expresan intención de forma directa. Sin reiniciar la variable:
- Súmale 5 (usa
+=). - Multiplícalo por 2 (usa
*=). - Réstale 4 (usa
-=). - Imprime el resultado final. ¿Cuánto da?
Pista 1: hay una forma más corta de escribir
variable = variable + algoque hace la operación y la reasignación en un solo paso.Pista 2: aplica los tres operadores compuestos en el orden dado, cada uno sobre la misma variable; recuerda que
+=,*=y-=combinan operación y reasignación en un paso. El orden importa porque cada paso parte del resultado anterior.
Ejercicio 6.6: El Valor por Defecto (Cortocircuito)
Recuerda que or devuelve uno de los valores, no solo True/False.
- Guarda un texto en la variable
entrada(empieza con"Ana"). - Calcula
nombre = entrada or "Anónimo"e imprimenombre. - Cambia
entradaa""(cadena vacía) y repite. ¿Qué imprime ahora? - Explica en un comentario por qué la cadena vacía activó el reemplazo.
Pista 1:
orno siempre daTrueoFalse; devuelve el primer valor “verdadero” que encuentra, o el último si ninguno lo es.Pista 2: una cadena vacía
""cuenta como “falsa” en Python, así queentrada or "Anónimo"cae al segundo valor apenasentradaestá vacía.
Ejercicio 6.7: ¿La Misma Caja? (is e is None)
- Crea
pedido = None(aún no llega nada) y comprueba conis Nonesi hay pedido; imprime el resultado. - Asigna
pedido = ["Tornillos"]y repite la comprobación. - Crea
a = [1, 2]yb = [1, 2]. Antes de imprimir nada, predice: ¿qué daa == b? ¿Ya is b? Anota tu respuesta, luego imprime ambos y compara. Explica en un comentario por qué dan distinto. - Ahora
c = a. Predice qué daa is cantes de imprimirlo. ¿Por qué este sí?
Pista 1:
isno compara si dos valores “se ven igual”; compara si son literalmente el mismo objeto en memoria.Pista 2: dos listas con el mismo contenido son iguales (
==) pero no son el mismo estante (is), salvo que una sea alias directo de la otra; pruebaa is by luegoa is cuna junto a la otra, la diferencia entre ambas te muestra la regla completa.
¡Ojo!: confundir
==conis.==compara si los valores son iguales;iscompara si son el mismo objeto en memoria. Usa==para comparar contenido y reservaiscasi exclusivamente parais None.
Ejercicio 6.8: El Orden de la Maquinaria (Precedencia)
Sin ejecutar nada todavía, predice en un comentario el resultado de cada línea. Luego imprime y compara:
2 + 3 * 4(2 + 3) * 410 - 4 - 3(¿izquierda a derecha o derecha a izquierda?)True or False and False(¿quién gana,oroand?)
- Reto: si
a = Trueyb = False, ¿qué resultado danot (a or b)? Razónalo en voz alta antes de probarlo.
Moraleja esperada: cuando dudes de la precedencia, los paréntesis son gratis.
Pista 1: la multiplicación y la división se evalúan antes que la suma y la resta, igual que en la aritmética normal que ya conoces.
Pista 2: entre operadores lógicos,
andse evalúa antes queor; si la precedencia no coincide con lo que quieres decir, los paréntesis siempre pueden forzar el orden.
Soluciones: en el Apéndice B está la solución de cada ejercicio. Inténtalo por tu cuenta antes de consultarla.
Ya sabes comparar y combinar condiciones. En el siguiente capítulo esas comparaciones cobran vida: tu programa empezará a tomar decisiones y a bifurcar su camino según lo que encuentre.