Duración sugerida: 55–75 minutos · Lenguaje: Python 3 · Nivel: 1.º de grado/FP/autodidactas
Este simulacro está inspirado en una prueba real de laboratorio de Fundamentos de Programación (UAH, junio 2022), pero no es una copia ni reproduce su contenido; se trata de un diseño original para practicar con enunciados de estilo similar.
Instrucciones
- Puedes usar tu entorno Python local o un cuaderno (Jupyter/Colab). No se permite buscar soluciones completas en Internet; sí consultar documentación oficial del lenguaje.
- Estructura tu código en funciones con docstrings y tipos (type hints) cuando sea razonable.
- Indica precondiciones si las hubiera (por ejemplo, tipos de datos esperados, listas no vacías, etc.).
- Proporciona pruebas mínimas (“probadores”) debajo de cada función con
print(...)
oassert
. - Puntuación total: 10 puntos. Se valora corrección, diseño, legibilidad y casos borde.
Dataset común
Usa en los ejercicios de la Parte I la siguiente lista de diccionarios que simula un catálogo de una plataforma de streaming ficticia:
series = [
{"titulo": "Círculo de Hielo", "reparto": ["Alicia", "Pedro", "Nora", "Luis"],
"genero": "drama", "temporadas": 5, "visualizaciones": 8200},
{"titulo": "Vector 7", "reparto": ["Nora", "Miguel"],
"genero": "ciencia ficción", "temporadas": 3, "visualizaciones": 15000},
{"titulo": "Café con Bits", "reparto": ["Pedro", "Lucía", "Ana"],
"genero": "comedia", "temporadas": 6, "visualizaciones": 9100},
{"titulo": "Sombras del Kernel", "reparto": ["Germán", "Alicia"],
"genero": "suspense", "temporadas": 4, "visualizaciones": 13000},
{"titulo": "Redox 2030", "reparto": ["Ana", "Luis"],
"genero": "ciencia ficción", "temporadas": 7, "visualizaciones": 12000}
]
Puedes ampliar o modificar este dataset si lo justificas en tu solución (por ejemplo, para probar empates o listas vacías). Documenta cualquier cambio.
PARTE I — Laboratorio con listas y diccionarios (7 puntos)
1) Serie con más temporadas de un género (2,5 pt)
Enunciado. Implementa una función mas_temporadas_de_genero(genero: str, series: list) -> tuple[str, int]
que devuelva una tupla (titulo, temporadas)
con la serie que tenga más temporadas dentro del genero
indicado.
- Empates: si hay varias con el mismo máximo, puedes devolver cualquiera o una lista de títulos; pero debes documentarlo en el docstring y mantener ese comportamiento en las pruebas.
- Precondiciones: documenta qué ocurre si el género no existe en el catálogo (por ejemplo, devolver
None
, lanzarValueError
, etc.).
Pruebas mínimas sugeridas
print(mas_temporadas_de_genero("ciencia ficción", series)) # Esperado: ("Redox 2030", 7)
2) Visualizaciones de la serie menos vista (recursivo) (2 pt)
Enunciado. Implementa una función recursiva min_visualizaciones(series: list) -> int
que retorne el número de visualizaciones de la serie menos vista. No uses bucles ni funciones agregadas de alto nivel (permitido min
sólo si no recorres la lista con él; idealmente compara tú mismo).
- Casos borde: catálogo vacío ⇒ define y documenta el retorno (por ejemplo,
0
oNone
).
Pruebas mínimas sugeridas
print(min_visualizaciones(series)) # Con el dataset original, esperado: 8200
3) Filmografía de un intérprete ordenada por impacto (2,5 pt)
Enunciado. Implementa trabajos_de(actor: str, series: list) -> list[tuple[str, int]]
que devuelva una lista de tuplas (titulo, visualizaciones)
para todas las series donde aparezca actor
, ordenada de mayor a menor por visualizaciones
.
- No modifiques la lista original.
- En caso de no encontrar al actor, devuelve
[]
(y documenta el comportamiento).
Pruebas mínimas sugeridas
print(trabajos_de("Ana", series)) # Ej.: [("Vector 7", 15000), ("Redox 2030", 12000), ("Café con Bits", 9100)]
PARTE II — Máximo local en secuencias (3 puntos)
4) Detección de máximo local (1 pt)
Enunciado. Implementa es_maximo_local(a: float, b: float, c: float) -> bool
que devuelva True
si b
es estrictamente mayor que a
y que c
.
- Considera el caso de valores iguales (no debe contar como máximo local si
b == c
ob == a
).
Pruebas mínimas sugeridas
print(es_maximo_local(4, 7, 5)) # True
print(es_maximo_local(4, 5, 5)) # False
5) Posición del primer máximo local (iterativo o recursivo) (2 pt)
Enunciado. Dada una lista de enteros, implementa una función que devuelva la posición (índice) del primer máximo local. Si no existe, devuelve None
.
- Opción A (iterativa):
posicion_primer_maximo_local(lista: list[int]) -> int | None
- Opción B (recursiva):
posicion_primer_maximo_local_rec(lista: list[int]) -> int | None
Pruebas mínimas sugeridas
print(posicion_primer_maximo_local([3,5,5,4,7,5,6,8])) # Ejemplo de prueba
Criterios de evaluación
- Corrección (6 pt): resultados esperados, manejo de empates y casos borde, no mutación indebida de datos.
- Diseño (2 pt): modularidad, docstrings, type hints, nombres claros y consistentes.
- Pruebas (1 pt): probadores que demuestren el comportamiento normal y casos borde.
- Estilo (1 pt): legibilidad, comentarios justificados, uso razonable de recursión.
Pérdida de puntos por no documentar decisiones (p. ej., qué devolver cuando no hay coincidencias) o por no justificar el uso de recursión/iteración donde se pide.
Plantilla mínima (opcional)

Copia y completa esta plantilla en tu editor:
Solucionario (oculto)
Consejo: intenta resolver todo sin mirar. Abre cada bloque solo para contrastar.

¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.

NUESTRAS ÚLTIMAS PUBLICACIONES
- 15 ejercicios básicos en R (con soluciones)
- 📘 5 Ejercicios Sencillos de Programación en R (con soluciones)
- Guía para Aprender a Estudiar Programación con las 10 Claves de la Autodisciplina
- Serializar una lista de personas (nombre, apellido, DNI) en Java y guardarla en un archivo binario
- Simulacro de Examen — Fundamentos de Programación (Laboratorio)
- Reflexiones en Academia SanRoque: La importancia de la motivación, el esfuerzo y el aprendizaje en la educación y la formación
- CHECK Constraint en Oracle SQL: garantiza la calidad de tus datos paso a paso
- Simulacro #4 – Examen de C++ / Estructuras de Datos
- Simulacro #3 – Examen de C++ / Estructuras de Datos
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

NUESTRAS ÚLTIMAS PUBLICACIONES
- 15 ejercicios básicos en R (con soluciones)
- 📘 5 Ejercicios Sencillos de Programación en R (con soluciones)
- Guía para Aprender a Estudiar Programación con las 10 Claves de la Autodisciplina
- Serializar una lista de personas (nombre, apellido, DNI) en Java y guardarla en un archivo binario
- Simulacro de Examen — Fundamentos de Programación (Laboratorio)
- Reflexiones en Academia SanRoque: La importancia de la motivación, el esfuerzo y el aprendizaje en la educación y la formación
- CHECK Constraint en Oracle SQL: garantiza la calidad de tus datos paso a paso
- Simulacro #4 – Examen de C++ / Estructuras de Datos
- Simulacro #3 – Examen de C++ / Estructuras de Datos
- Simulacro #2 de Examen C++
- Simulacro de Examen de Estructuras de Datos en C++ (con Soluciones)Guía completa para repasar antes del parcial/final
- Fundamentos de C++ y Ejercicios Resueltos de Estructuras de Datos: Guía Paso a Paso

Contenido restringido
Comments are closed