
La mejor forma de aprender a programar es escribir programas. Después de estudiar las variables, los operadores, las estructuras condicionales, los bucles, las funciones y las técnicas básicas de detección y corrección de errores, ha llegado el momento de poner en práctica todos esos conocimientos.
En este capítulo resolveremos varios ejercicios resueltos de Python de dificultad progresiva. Cada problema combinará diferentes conceptos vistos a lo largo del curso para que aprendas a desarrollar programas completos, organizados y fáciles de entender.
1. Cómo resolver un ejercicio de programación
Antes de escribir una sola línea de código es recomendable dedicar unos minutos a comprender el problema. En muchas ocasiones, un programa no falla porque la sintaxis sea incorrecta, sino porque no hemos entendido bien qué debemos resolver.
Cuando nos enfrentemos a un ejercicio de programación en Python seguiremos siempre estos pasos:
- Leer atentamente el enunciado. Identifica qué información proporciona el problema y cuál debe ser el resultado.
- Determinar los datos de entrada. Piensa qué información tendrá que introducir la persona usuaria o qué datos utilizará el programa.
- Diseñar el algoritmo. Organiza mentalmente los pasos que deberá seguir el programa antes de comenzar a escribir el código.
- Programar la solución. Utiliza las variables, operadores, estructuras condicionales, bucles y funciones que sean necesarios.
- Probar el programa. Comprueba que funciona correctamente utilizando diferentes datos de entrada, especialmente aquellos que puedan producir situaciones límite.
Por ejemplo, si queremos calcular el precio final de una compra con descuento, antes de programar podríamos plantearnos las siguientes preguntas:
- ¿Qué datos necesitamos? El precio del producto y el porcentaje de descuento.
- ¿Qué cálculos debemos realizar? Calcular el importe del descuento y restarlo al precio original para obtener el precio final.
- ¿Qué resultado queremos mostrar? El precio final que deberá pagar la persona compradora.
Con este pequeño análisis ya sabemos qué debe hacer el programa y podemos comenzar a escribir el código con mayor seguridad.
Recuerda que un buen programa no solo debe funcionar correctamente. También debe ser fácil de leer, utilizar nombres descriptivos para las variables y funciones y añadir comentarios cuando ayuden a comprender el código.
Consejo: No empieces a programar inmediatamente. Dedicar unos minutos a pensar cómo resolver el problema suele ahorrar mucho tiempo durante el desarrollo y facilita encontrar posibles errores antes incluso de ejecutar el programa.
2. Ejercicios resueltos de Python
A continuación resolveremos varios ejercicios de programación en Python de dificultad progresiva. En todos ellos aplicaremos los conocimientos adquiridos a lo largo del curso: variables, operadores, estructuras condicionales, bucles, funciones y técnicas básicas de depuración.
Antes de consultar la solución, intenta resolver cada ejercicio por tu cuenta. Después compara tu propuesta con la solución explicada paso a paso y analiza las diferencias. Recuerda que un mismo problema puede resolverse de varias formas, pero siempre conviene escribir un código claro, ordenado y correctamente comentado.
2.1. Ejercicio resuelto. Calcular el precio final de una compra
Enunciado
Una tienda aplica un descuento en función del importe de la compra:
- Si el importe es inferior a 50 €, no se aplica ningún descuento.
- Si el importe está entre 50 € y 100 €, se aplica un 5 % de descuento.
- Si el importe supera los 100 €, se aplica un 10 % de descuento.
Crea un programa que solicite el importe de la compra y muestre:
- El descuento aplicado.
- El precio final que deberá pagar la persona compradora.
Análisis
Datos de entrada
- Importe de la compra.
Proceso
- Comprobar el importe.
- Determinar el porcentaje de descuento.
- Calcular el descuento.
- Obtener el precio final.
Salida
- Porcentaje de descuento.
- Precio final.
Algoritmo
- Pedir el importe de la compra.
- Determinar el porcentaje de descuento.
- Calcular el importe del descuento.
- Calcular el precio final.
- Mostrar el resultado.
Solución
# Función que calcula el porcentaje de descuento
def calcular_descuento(precio):
if precio < 50:
return 0
elif precio <= 100:
return 5
else:
return 10
# Programa principal
# Solicitamos el importe de la compra
precio = float(input("Importe de la compra: "))
# Calculamos el porcentaje de descuento
descuento = calcular_descuento(precio)
# Calculamos el precio final
precio_final = precio - (precio * descuento / 100)
# Mostramos los resultados
print("Descuento aplicado:", descuento, "%")
print("Precio final:", precio_final, "€")
Ejemplo de ejecución
Importe de la compra: 120 Descuento aplicado: 10 % Precio final: 108.0 €
Explicación
En este programa se utiliza una función para calcular el porcentaje de descuento que corresponde según el importe de la compra. De este modo, el programa principal resulta más sencillo de leer y, si en el futuro cambian los descuentos, solo será necesario modificar la función calcular_descuento().
Observa también que las variables tienen nombres descriptivos (precio, descuento y precio_final) y que el código está organizado en bloques mediante comentarios. Esto facilita su comprensión y mantenimiento.
2.2. Ejercicio resuelto. Comprobar si un ordenador cumple los requisitos mínimos
Enunciado
Una tienda de informática desea comprobar si un ordenador cumple los requisitos mínimos para instalar un determinado sistema operativo.
El ordenador deberá cumplir las siguientes condiciones:
- Tener al menos 8 GB de memoria RAM.
- Tener un procesador con una frecuencia mínima de 2.5 GHz.
- Disponer de al menos 256 GB de almacenamiento libre.
Crea un programa que solicite estos datos y muestre si el equipo cumple o no los requisitos.
Análisis
Datos de entrada
- Memoria RAM (GB).
- Frecuencia del procesador (GHz).
- Almacenamiento disponible (GB).
Proceso
- Comprobar si los tres requisitos se cumplen.
- Determinar si el ordenador es compatible.
Salida
- Mensaje indicando si el equipo cumple o no los requisitos.
Algoritmo
- Solicitar la memoria RAM.
- Solicitar la frecuencia del procesador.
- Solicitar el almacenamiento disponible.
- Comprobar si se cumplen todos los requisitos.
- Mostrar el resultado.
Solución
# Función que comprueba los requisitos mínimos
def comprobar_requisitos(ram, procesador, almacenamiento):
if ram >= 8 and procesador >= 2.5 and almacenamiento >= 256:
return True
else:
return False
# Programa principal
# Solicitamos las características del ordenador
ram = int(input("Memoria RAM (GB): "))
procesador = float(input("Frecuencia del procesador (GHz): "))
almacenamiento = int(input("Almacenamiento libre (GB): "))
# Comprobamos si el equipo es compatible
compatible = comprobar_requisitos(ram, procesador, almacenamiento)
# Mostramos el resultado
if compatible:
print("El ordenador cumple los requisitos mínimos.")
else:
print("El ordenador NO cumple los requisitos mínimos.")
Ejemplo de ejecución
Memoria RAM (GB): 16 Frecuencia del procesador (GHz): 3.2 Almacenamiento libre (GB): 512 El ordenador cumple los requisitos mínimos.
Explicación
En este ejercicio se utiliza una función para comprobar si un ordenador cumple los requisitos mínimos de instalación. La función devuelve True cuando se cumplen todas las condiciones y False en caso contrario. Después, el programa principal utiliza ese resultado para mostrar el mensaje correspondiente.
Este tipo de programas es muy habitual en aplicaciones que verifican la compatibilidad de un equipo antes de instalar un sistema operativo o una aplicación.
2.3. Ejercicio resuelto. Calcular la nota media de una clase
Enunciado
Una persona docente desea calcular la nota media de una clase.
El programa deberá solicitar cuántas notas se van a introducir. Después pedirá cada una de ellas y, al finalizar, mostrará la nota media obtenida.
Análisis
Datos de entrada
- Número de notas.
- Nota de cada estudiante.
Proceso
- Solicitar el número de notas.
- Pedir todas las notas utilizando un bucle.
- Sumar las notas.
- Calcular la media.
Salida
- Nota media de la clase.
Algoritmo
- Pedir el número de notas.
- Inicializar una variable para acumular la suma.
- Repetir tantas veces como notas haya que introducir:
- Pedir una nota.
- Añadirla al acumulador.
- Calcular la nota media.
- Mostrar el resultado.
Solución
# Función que calcula la nota media
def calcular_media(cantidad_notas):
suma = 0
# Solicitamos todas las notas
for contador in range(cantidad_notas):
nota = float(input("Introduce una nota: "))
suma = suma + nota
# Devolvemos la nota media
return suma / cantidad_notas
# Programa principal
# Solicitamos el número de notas
cantidad = int(input("¿Cuántas notas deseas introducir? "))
# Calculamos la media
media = calcular_media(cantidad)
# Mostramos el resultado
print("La nota media es:", media)
Ejemplo de ejecución
¿Cuántas notas deseas introducir? 4 Introduce una nota: 6 Introduce una nota: 8 Introduce una nota: 7 Introduce una nota: 9 La nota media es: 7.5
Explicación
Este ejercicio combina varios conceptos aprendidos a lo largo del curso. Se utiliza una función para organizar el programa, un bucle for para solicitar todas las notas y una variable acumuladora para obtener la suma total.
Finalmente, la función devuelve la nota media mediante return y el programa principal muestra el resultado. Observa también que el código está organizado mediante comentarios y que las variables (cantidad, nota, suma y media) tienen nombres descriptivos, lo que facilita su lectura y mantenimiento.
2.4. Ejercicio resuelto. Calcular el importe de un aparcamiento
Enunciado
Un aparcamiento cobra sus tarifas según el tiempo que permanece estacionado un vehículo:
- La primera hora cuesta 2 €.
- Cada hora adicional cuesta 1,50 €.
- Si el vehículo permanece más de 8 horas, se aplicará una tarifa máxima de 12 €.
Crea un programa que solicite el número de horas que ha permanecido el vehículo en el aparcamiento y muestre el importe que debe pagar.
Análisis
Datos de entrada
- Número de horas que ha permanecido el vehículo.
Proceso
- Comprobar el número de horas.
- Calcular el importe correspondiente.
- Aplicar la tarifa máxima cuando sea necesario.
Salida
- Importe que debe pagar.
Algoritmo
- Pedir el número de horas.
- Calcular el importe según la tarifa.
- Aplicar el límite máximo de 12 € si corresponde.
- Mostrar el resultado.
Solución
# Función que calcula el importe del aparcamiento
def calcular_importe(horas):
if horas <= 1:
return 2
elif horas > 8:
return 12
else:
return 2 + (horas - 1) * 1.5
# Programa principal
# Solicitamos las horas de estancia
horas = int(input("Horas de aparcamiento: "))
# Calculamos el importe
importe = calcular_importe(horas)
# Mostramos el resultado
print("Importe a pagar:", importe, "€")
Ejemplo de ejecución
Horas de aparcamiento: 5 Importe a pagar: 8.0 €
Explicación
En este ejercicio se utiliza una función para encapsular el cálculo del importe del aparcamiento. De este modo, el programa principal únicamente solicita los datos, llama a la función y muestra el resultado.
Observa que todas las tarifas están centralizadas en la función calcular_importe(). Si en el futuro cambian los precios del aparcamiento, bastará con modificar esa función sin afectar al resto del programa.
2.5. Ejercicio resuelto. Control de acceso a un recinto
Enunciado
En un recinto solo pueden acceder las personas mayores de 18 años.
El programa solicitará la edad de varias personas. Después de introducir cada edad, preguntará si se desea comprobar otra persona.
Al finalizar, mostrará cuántas personas podían acceder y cuántas no.
Análisis
Datos de entrada
- Edad de cada persona.
- Respuesta para continuar (
SoN).
Proceso
- Solicitar la edad.
- Comprobar si la persona puede acceder.
- Contar los accesos permitidos y denegados.
- Repetir el proceso hasta que la persona usuaria indique que desea finalizar.
Salida
- Número de accesos permitidos.
- Número de accesos denegados.
Algoritmo
- Inicializar dos contadores.
- Repetir mientras la persona usuaria desee continuar:
- Solicitar la edad.
- Comprobar si puede acceder.
- Actualizar el contador correspondiente.
- Preguntar si desea comprobar otra persona.
- Mostrar el resultado final.
Solución
# Función que comprueba si una persona puede acceder
def puede_acceder(edad):
return edad >= 18
# Programa principal
# Inicializamos los contadores
accesos_permitidos = 0
accesos_denegados = 0
continuar = "S"
while continuar.upper() == "S":
# Solicitamos la edad
edad = int(input("Edad: "))
# Comprobamos el acceso
if puede_acceder(edad):
print("Acceso permitido")
accesos_permitidos += 1
else:
print("Acceso denegado")
accesos_denegados += 1
# Preguntamos si queremos continuar
continuar = input("¿Deseas comprobar otra persona? (S/N): ")
# Mostramos el resumen
print()
print("Personas con acceso permitido:", accesos_permitidos)
print("Personas con acceso denegado:", accesos_denegados)
Ejemplo de ejecución
Edad: 20 Acceso permitido ¿Deseas comprobar otra persona? (S/N): S Edad: 15 Acceso denegado ¿Deseas comprobar otra persona? (S/N): S Edad: 30 Acceso permitido ¿Deseas comprobar otra persona? (S/N): N Personas con acceso permitido: 2 Personas con acceso denegado: 1
Explicación
Este ejercicio utiliza una función para comprobar si una persona puede acceder al recinto. Además, emplea un bucle while para repetir el proceso tantas veces como sea necesario y dos contadores para registrar el número de accesos permitidos y denegados.
Observa también el uso de upper(), que permite aceptar tanto S como s al preguntar si se desea continuar. De este modo, el programa resulta más cómodo de utilizar y evita errores al introducir la respuesta.
3. Actividad de ampliación
Resuelve nuevos problemas con ayuda de la inteligencia artificial
A lo largo de este curso has aprendido a desarrollar programas utilizando variables, operadores, estructuras condicionales, bucles, funciones y técnicas básicas de detección y corrección de errores. Ahora es el momento de poner en práctica todo lo aprendido resolviendo nuevos problemas por tu cuenta.
Puedes utilizar una herramienta de inteligencia artificial, como ChatGPT u otro asistente similar, para ayudarte durante el proceso. Sin embargo, recuerda que la IA debe servirte como apoyo, no como sustituto de tu aprendizaje.
Una buena forma de trabajar consiste en seguir estos pasos:
- Lee el enunciado y piensa cómo resolverías el problema.
- Diseña el algoritmo antes de escribir el código.
- Intenta programar la solución por tu cuenta.
- Si tienes dudas, consulta a la IA para obtener pistas o comparar tu solución.
- Comprueba que entiendes el código antes de dar el ejercicio por terminado.
Intenta resolver algunos de los siguientes ejercicios:
- Calcular el consumo eléctrico de un electrodoméstico a partir de su potencia y las horas de uso.
- Calcular el coste de una reparación informática según las horas de trabajo y el precio por hora.
- Calcular la capacidad libre de un disco después de copiar un archivo.
- Diseñar un ejercicio propio relacionado con tus estudios o con una situación cotidiana y resolverlo con ayuda de la IA.
Consejo: Si utilizas una herramienta de inteligencia artificial, no te limites a copiar el código generado. Pide que te explique cada parte del programa, analiza su funcionamiento e intenta realizar mejoras por tu cuenta. El verdadero aprendizaje consiste en comprender cómo funciona la solución.