Resolución de la Prueba Técnica para Programador Junior - Python
Parte 1: Programación Orientada a Objetos
Archivo: parte1/producto.py
Descripción de la clase Producto:
- Atributos:
- nombre: String
- precio: Float
- cantidad: Integer
- Métodos:
- __init__(self, nombre, precio, cantidad): Constructor que inicializa los atributos.
- calcular_total(self): Calcula y devuelve el precio total, que es precio * cantidad.
- __str__(self): Devuelve una representación en formato “Producto(nombre=Nombre, precio=Precio, cantidad=Cantidad)”.
Implementación de la clase Producto:
class Producto:
def __init__(self, nombre, descripcion, precio, cantidad):
if cantidad < 0:
raise ValueError("La cantidad no puede ser negativa")
self.nombre = nombre
self.descripcion = descripcion
self.precio = precio
self.cantidad = cantidad
def calcular_precio_total(self):
return self.precio * self.cantidad
def __str__(self):
return f"Producto(nombre={self.nombre}, descripcion={self.descripcion}, precio={self.precio}, cantidad={self.cantidad})"
- Se ha implementado la clase Producto con sus atributos y métodos.
- El método __init__ inicializa los atributos de la clase.
- El método calcular_precio_total calcula el precio total del producto.
- El método __str__ devuelve una representación en formato “Producto(nombre=Nombre, precio=Precio, cantidad=Cantidad)”.
Parte 2: Lógica de Programación y Estructuras de Datos
Función fibonacci (Parte 2):
La función fibonacci debe ser recursiva. El enésimo número de la secuencia de Fibonacci se calcula como:
- fibonacci(0) = 0
- fibonacci(1) = 1
- fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) para n > 1
Implementación de la función fibonacci:
import string
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
def fibonacci_memo(n, memo={0: 0, 1: 1}):
if n not in memo:
= fibonacci_memo(n - 1, memo) + fibonacci_memo(n - 2, memo)
memo[n] return memo[n]
- Se ha implementado la función fibonacci de forma recursiva.
- Se ha implementado la función analizar_texto que cuenta el número de palabras y letras en un texto.
Función analizar_texto (Parte 2):
La función analizar_texto recibe un texto y devuelve un diccionario con dos claves:
- ‘palabras’: Número de palabras en el texto.
- ‘letras’: Número de letras en el texto (sin contar espacios ni signos de puntuación).
Implementación de la función analizar_texto:
def analizar_texto(texto):
= texto.split()
palabras
= sum(len(''.join(c for c in palabra if c.isalpha()))
letras for palabra in palabras)
return {'palabras': len(palabras), 'letras': letras}
- Se ha implementado la función analizar_texto que cuenta el número de palabras y letras en un texto.
- La función split divide el texto en palabras.
- Se utiliza una expresión generadora para contar el número de letras en cada palabra.
- El resultado se devuelve como un diccionario con las claves ‘palabras’ y ‘letras’.
Archivo runner.py
Conclusión:
- Se ha implementado la clase Producto con sus métodos en la Parte 1.
- Se han implementado las funciones fibonacci y analizar_texto en la Parte 2.
- El script runner.py permite ejecutar todas las pruebas y calcular la puntuación final.
Ahora puedes ejecutar las pruebas de la siguiente manera:
python3 runner.py
Esto ejecutará todas las pruebas y generará un resumen con la puntuación final.