Este examen no tiene trampas ni pretende medir velocidad. Puedes consultar tus apuntes y las lecciones anteriores. La habilidad que queremos observar es otra: saber qué necesitas hacer y avanzar de forma ordenada hasta una solución comprobable.
Resolver un problema corto con menos ayuda y usar los errores para decidir qué parte del curso repasar.
Evalúa cuatro hábitos, no cuarenta y cinco temas de memoria
Si has llegado hasta aquí, no necesitas demostrar cada método de Python por separado. Busca estas cuatro capacidades:
- Representar: elegir strings, números, listas o diccionarios que encajen con el problema.
- Descomponer: dividir el trabajo en pasos y funciones pequeñas.
- Comprobar: probar casos normales y algún límite.
- Diagnosticar: cuando algo falla, localizar la causa sin cambiar todo a la vez.
Consultar cómo se escribe exactamente un método no invalida ninguna de esas habilidades. Programar no es competir contra la documentación.
Reto final: resume pedidos antes de escribir una sola línea
Imagina una pequeña tienda. Recibes una lista de pedidos y quieres obtener dos resultados: cuánto dinero suman los pedidos pagados y cuántos siguen pendientes.
pedidos = [
{"importe": 20, "pagado": True},
{"importe": 15, "pagado": False},
{"importe": 12, "pagado": True},
]Antes de programar, escribe mentalmente el plan:
- Recorrer cada pedido.
- Si está pagado, sumar su importe.
- Si no está pagado, aumentar el contador de pendientes.
- Devolver ambos resultados juntos.
Ese plan ya resuelve la parte más importante del problema. La sintaxis viene después.
Mira una solución y lee decisiones, no caracteres
def resumir_pedidos(pedidos):
total_pagado = 0
pendientes = 0
for pedido in pedidos:
if pedido["pagado"]:
total_pagado += pedido["importe"]
else:
pendientes += 1
return {"total_pagado": total_pagado, "pendientes": pendientes}
print(resumir_pedidos([
{"importe": 20, "pagado": True},
{"importe": 15, "pagado": False},
]))Fíjate en las decisiones: dos acumuladores porque buscamos dos respuestas; un for porque procesamos todos los elementos; un if porque cada pedido pertenece a una de dos rutas; un diccionario de salida porque queremos devolver dos valores con nombre.
¿Y si yo lo haría con comprehensions?
También puede ser correcto. El examen no busca una sintaxis concreta: busca una solución que puedas explicar, comprobar y modificar sin perderte.
Evaluación en tres niveles de autonomía
Nivel 1 · leer y predecir
numeros = [2, 5, 8]
total = 0
for numero in numeros:
if numero > 4:
total += numero
print(total)Sin ejecutar: ¿qué imprime y qué elementos contribuyen al total?
Comprobar
Imprime 13: se suman 5 y 8; el 2 no supera 4.
Nivel 2 · completar una solución parcial
Completa la función que resume pedidos. Hay estructura, pero las dos decisiones importantes siguen en tus manos.
32 1
La salida aparecerá aquí.
Necesito una pista
- En la rama pagada, el importe está en el diccionario
pedido. - En la rama pendiente solo necesitas incrementar un contador.
Ver una solución razonada
def resumir_pedidos(pedidos):
total_pagado = 0
pendientes = 0
for pedido in pedidos:
if pedido["pagado"]:
total_pagado += pedido["importe"]
else:
pendientes += 1
return total_pagado, pendientes
pedidos = [
{"importe": 20, "pagado": True},
{"importe": 15, "pagado": False},
{"importe": 12, "pagado": True},
]
print(*resumir_pedidos(pedidos), sep="\n")Nivel 3 · resuelve desde un briefing
Recibe productos con nombre y stock. Devuelve los nombres cuyo stock sea 0.
Recibe alumnos con nombre y nota. Devuelve cuántos tienen nota ≥ 5.
Elige una. El editor incluye datos de prueba, pero no incluye la estructura de la solución.
Opción A preparada: escribe sin_stock(productos) desde cero. Si prefieres la opción B, puedes sustituir el briefing y tus datos manualmente.
['Lápiz', 'Regla']
La salida aparecerá aquí.
Necesito una pista
- Empieza por la forma del resultado: necesitas una lista de nombres.
- Recorre productos y añade el nombre solo cuando
stock == 0.
Ver una solución razonada
productos = [
{"nombre": "Cuaderno", "stock": 3},
{"nombre": "Lápiz", "stock": 0},
{"nombre": "Regla", "stock": 0},
]
def sin_stock(productos):
resultado = []
for producto in productos:
if producto["stock"] == 0:
resultado.append(producto["nombre"])
return resultado
print(sin_stock(productos))Rúbrica: usa el bloqueo para elegir el repaso
| Si te costó… | Repasa |
|---|---|
| elegir lista/diccionario o representar datos | 12–15 |
| recorrer y decidir | 7–10 |
| organizar una función y devolver resultado | 17–19 |
| entender un fallo | 38–39 |
| mantener el código claro | 40 |
Superar el examen no significa escribir de memoria. Significa poder explicar tu plan, producir una primera solución, probarla y corregirla con método.
Haz tres pruebas que te den confianza de verdad
Que el ejemplo anterior funcione no demuestra que la función esté bien en todos los casos. Prueba variaciones que cambien el camino del programa.
# 1. Ningún pedido
[]
# 2. Todos pagados
[{"importe": 5, "pagado": True}]
# 3. Todos pendientes
[{"importe": 5, "pagado": False}, {"importe": 7, "pagado": False}]No necesitas memorizar una biblioteca de testing para pensar como alguien que prueba software. Pregúntate: “¿qué ruta de mi código todavía no he ejercitado?”.
Tu bloqueo indica dónde repasar; no borra lo que ya sabes
- Si cuesta representar los pedidos, repasa listas y diccionarios.
- Si cuesta recorrer y decidir, vuelve a for e if.
- Si cuesta organizar la solución, revisa funciones y return.
- Si el código casi funciona pero no sabes por qué falla, practica el método de depuración.
- Si funciona pero te resulta difícil de leer, revisa nombres, funciones pequeñas y estilo.
Repasar una lección concreta es progreso. Empezar todo el curso desde cero por inseguridad suele ser menos útil que localizar la pieza que falta.
Después del curso, elige un camino que produzca cosas reales
Tu siguiente etapa debería aumentar la autonomía, no simplemente acumular más teoría. Elige una dirección durante unas semanas y construye proyectos pequeños relacionados con ella.
- Automatización: archivos, carpetas, hojas de cálculo y tareas repetitivas.
- Datos: limpieza, análisis y visualización. Si quieres aprender a consultar y transformar información almacenada en bases de datos, continúa con el curso de SQL desde cero de AprenderSQL.es; después podrás combinar SQL con herramientas de Python como pandas.
- Web y APIs: HTTP, frameworks y pequeñas aplicaciones con una interfaz.
- Python general: scripts, paquetes, testing y proyectos propios cada vez menos guiados.
puedes tomar un problema pequeño, describir los datos que necesita, dividirlo en pasos, escribir una primera solución, probarla y mejorarla cuando encuentras un fallo.
Eso no significa “saber todo Python”. Significa que ya tienes una base desde la que aprender lo siguiente construyendo.