Enunciado y solución de ejercicios resueltos en Python: uso de módulos y paquetes y programación orientada a objetos (clases, atributos y herencia). Se incluye la descarga del código fuente completo de los ejercicios en Python.
- Ejercicio resuelto Python 1: mostrar por pantalla la hora formateada y datos sobre Python.
- Ejercicio resuelto Python 2: programación orientada a objetos y módulos y paquetes.
- Descarga de los ficheros Python con los ejercicios resueltos.
Ejercicio resuelto Python 1: mostrar por pantalla la hora formateada y datos sobre Python
Enunciado ejercicio 1
Desarrolla un programa en Python que realice las siguientes acciones:
- Mostrar en consola la hora, con el siguiente formato: HH:MM:SS.
- Mostrar por consola la versión de Python con la que estamos compilando la aplicación.
- Mostrar por consola la ruta del ejecutable de Python con el que estamos compilando la aplicación.
Solución ejercicio 1 en Python
La solución propuesta al ejercicio 1, como ejemplo de uso de módulos y paquetes, podría ser:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Para obtener hora actual import datetime as fechas # Para obtener ruta y versión del ejecutable de Python import sys import os.path # Obtener la hora, minuto y segundo y mostrar por pantalla # en formato HH:MM:SS hora = fechas.datetime.now().hour minuto = fechas.datetime.now().minute segundo = fechas.datetime.now().second print(f"La hora actual es: {hora}:{minuto}:{segundo}") # Mostrar por pantalla la ruta del ejecutable de Python ruta = os.path.realpath(sys.executable) print("La ruta del ejecutable de Python es: ", ruta) # Mostrar por pantalla la versión de Python actual print("La versión de Python es: ", sys.version) |
Ejemplo de ejecución del ejercicio 1 en Python
La compilación del ejercicio 1 dará como resultado:
La hora actual es: 20:28:21
La ruta del ejecutable de Python es: C:\msys64\ucrt64\bin\python.exe
La versión de Python es: 3.10.11 (main, Apr 7 2023, 17:44:36) [GCC UCRT 12.2.0 64 bit (AMD64)]
Ejercicio resuelto Python 2: programación orientada a objetos y módulos y paquetes
Enunciado ejercicio 2
Desarrollar un programa que, mediante el uso de un módulo (fichero .py) por cada clase y otro para el programa principal, genere las siguientes clases con sus atributos correspondientes:
- Clase Persona, con los atributos siguientes:
- NIF: de tipo string.
- Nombre: de tipo string.
- Apellidos: de tipo string.
- Edad: de tipo int.
La clase Persona tendrá un constructor en el que se definirán los atributos. Y se deberá personalizar el método estándar __str__ para que genere los datos de los atributos con el formato:
DNI: …, Nombre: …, Apellidos: …, Edad: …
La clase Persona se creará en un módulo llamado Persona.py.
- Clase Trabajador, que debe heredar de la clase Persona y se le añadirá un nuevo atributo: Cargo (de tipo string). Al igual que en la clase Persona, se definirá un constructor con los atributos y se redefinirá el método __str__ para que devuelva los datos de los atributos con el formato: DNI: …, Nombre: …, Apellidos: …, Edad: …, Cargo: …
La clase Trabajador se creará en un módulo llamado «Trabajador.py».
Por último, el programa deberá instanciar ambas clases, pasando como atributos los valores que se quieran de ejemplo y mostrará por pantalla los datos de los atributos pasados, tanto para una Persona como para un Trabajador. El programa principal se creará en un módulo llamado programa.py y en este se importarán los módulos Persona y Trabajador.
Guardaremos los tres ficheros .py (los tres módulos) en un paquete (carpeta) que compondrá nuestra aplicación Python.
Solución del ejercicio 2 en Python
La solución propuesta al ejercicio 2, como ejemplo de uso de Programación Orientada a Objetos (POO) y de módulos y paquetes, podría ser:
- Módulo Persona.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Definimos la clase Persona, que no hereda de otras (object) class Persona (object): # Definimos el constructor, creando los atributos en su definición def __init__(self, DNI="", nombre="", apellidos="", edad=0): self.DNI = DNI self.nombre = nombre self.apellidos = apellidos self.edad = edad # Redefinimos el método __str__ para personalizar # los datos devueltos de los atributos de la clase def __str__(self): return "DNI: {}, Nombre: {}, Apellidos: {}, Edad: {}".format( self.DNI, self.nombre, self.apellidos, self.edad) |
- Módulo Trabajador.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Importamos el módulo Persona from Persona import Persona as Per # Definimos la clase Tabajador, heredando de la clase Persona class Trabajador (Per): # Definimos el constructor, añadiendo el atributo Cargo def __init__(self, Cargo="", DNI="", nombre="", apellidos="", edad=0): # Usamos la clase de la que hereda (Persona) Per.__init__(self,DNI=DNI, nombre=nombre, apellidos=apellidos, edad=edad) # Establecemos el valor del nuevo atributo Cargo self.Cargo = Cargo # Redefinimos el método __str__ para personalizar el resultado def __str__(self): return "DNI: {}, Nombre: {}, Apellidos: {}, Edad: {}, Cargo: {}".format( self.DNI, self.nombre, self.apellidos, self.edad, self.Cargo) |
- Módulo programa.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Importamos los módulos Persona y Trabajador from Persona import Persona as Per from Trabajador import Trabajador as Trab # Instanciamos la clase Persona, pasándole unos valores de ejemplo a los atributos per = Per(DNI="5252525K", nombre="Alonso", apellidos="Proyecto A", edad= 49) # Mostramos por consola los datos # al usar "per" sin nada más, se está llamando al método __str__ print("La persona es: ", per) # Instanciamos la clase Trabajador, pasándole unos valores de ejemplo a los atributos trab = Trab(DNI="45555555K", nombre="Javier", apellidos="Proyecto A", edad=55, Cargo="Desarrollador") # Mostramos por consola los datos # al usar "trab" sin nada más, se está llamando al método __str__ print("El trabajador es: ", trab) |
Ejemplo de ejecución del ejercicio 2 en Python
La compilación del ejercicio 2 dará como resultado:
La persona es: DNI: 5252525K, Nombre: Alonso, Apellidos: Proyecto A, Edad: 49
El trabajador es: DNI: 45555555K, Nombre: Javier, Apellidos: Proyecto A, Edad: 55, Cargo: Desarrollador
Descarga de los ficheros Python con los ejercicios resueltos
En el siguiente enlace os proporcionamos la descarga del código fuente completo en Python con la solución de los dos ejercicios: