Practica lo que aprendiste.
Todos los ejercicios y evaluaciones de ambos cursos en un solo lugar. Cada tarjeta te lleva a la lección donde puedes responder, comprobar la solución y guardar tu avance.
Tu presentación en tres líneas
Crea presentacion.cpp que imprima tu nombre, tu carrera y un objetivo, cada uno en su propia línea. Compílalo con g++ -std=c++20 -Wall -Wextra -Wpedantic y ejecútalo. Des…
Detective del estándar
Escribe estandar.cpp que imprima el valor de cplusplus. Compílalo dos veces, con -std=c++17 y con -std=c++20, y anota los dos números que aparecen. Después cambia return …
Completa el esqueleto
include int ( ) { std:: << "Hola desde C++\n"; return ; }
Evaluación · ¿Qué es C++? Compilador y primer programa
¿Qué produce g++ hola.cpp si no indicas la opción -o?
Evaluación · ¿Qué es C++? Compilador y primer programa
¿En qué fase aparece un error como undefined reference to main?
Evaluación · ¿Qué es C++? Compilador y primer programa
¿Qué valor imprime cplusplus al compilar con -std=c++20?
Ficha por teclado
Escribe un programa que pida nombre completo, carrera y ciclo, y muestre una ficha de tres líneas. Usa std::getline para los textos y std::cin >> para el ciclo. Prueba co…
Conversor de temperatura
Pide una temperatura en grados Celsius como double y muestra su equivalente en Fahrenheit con un decimal. La fórmula es F = C 9 / 5 + 32. Comprueba con 0 → 32.0, 100 → 21…
Completa el programa
include include <string> int main() { std::string lenguaje = "C++"; std:: << "Aprendo " << lenguaje << '\n'; return ; }
Evaluación · Estructura de un programa, cout y tipos
¿Cuántos bytes ocupa un char según el estándar de C++?
Evaluación · Estructura de un programa, cout y tipos
Si el usuario escribe Ada Lovelace y lees con std::cin >> nombre, ¿qué queda en nombre?
Evaluación · Estructura de un programa, cout y tipos
¿Qué imprime std::cout << std::fixed << std::setprecision(3) << 2.5;?
Presupuesto de cómputo
Una hora de GPU cuesta 2.40 USD y tienes 7 horas contratadas con un descuento del 15 %. Calcula el bruto, el ahorro y el total con variables constexpr para los tres datos…
Promedio sin perder decimales
Guarda tres notas enteras (14, 17 y 11), calcula su suma y su promedio, y muestra ambos con dos decimales. El promedio debe ser 14.00 y no 14. Cambia una nota a 16 y comp…
Área del círculo
include <iostream> int main() { constexpr double pi = ; double radio = 2.0; auto area = pi radio ; std::cout << area << '\n'; return ; }
Evaluación · Variables, const, auto y operadores
¿Qué tipo y qué valor tiene auto x = 7 / 2;?
Evaluación · Variables, const, auto y operadores
¿Qué exige constexpr que no exige const?
Evaluación · Variables, const, auto y operadores
¿Por qué int nota{7.5}; no compila?
Clasificador de temperatura
Escribe un programa que clasifique una temperatura corporal: >= 39.0 es fiebre alta, >= 37.5 es fiebre, >= 36.0 es normal y por debajo es hipotermia. Prueba con 38.5, 36.…
Año bisiesto
Un año es bisiesto si es divisible entre 4 y no entre 100, o si es divisible entre 400. Escribe la condición en una sola variable bool y muestra el resultado con un terna…
Completa la decisión
include <iostream> int main() { int nota = 16; if (nota 14) { std::cout << "Aprobado\n"; } { std::cout << "Desaprobado\n"; } return 0; }
Evaluación · Condicionales y switch
¿Qué ocurre con int x = 0; if (x = 5) { ... }?
Evaluación · Condicionales y switch
¿Por qué se escribe if (i < v.size() && v[i] > 0) en ese orden?
Evaluación · Condicionales y switch
¿Qué pasa si haces switch sobre una variable std::string?
Tabla de multiplicar
Pide por teclado un número entero entre 1 y 10 y muestra su tabla de multiplicar del 1 al 10 con el formato 7 x 3 = 21. Usa un for y comprueba que imprime exactamente die…
Pasos de Collatz
La conjetura de Collatz dice: si un número es par, divídelo entre 2; si es impar, multiplícalo por 3 y súmale 1. Repite hasta llegar a 1. Escribe un programa que cuente c…
Completa el bucle que cuenta pares
int pares = 0; for (int i = 0; i 10; ) { if (i % 2 == 0) { pares; } }
Evaluación · Bucles for, while y do-while
¿Cuántas veces se ejecuta el cuerpo de for (int i = 0; i < 5; ++i)?
Evaluación · Bucles for, while y do-while
¿Qué imprime este fragmento? int i = 0; while (i < 3) { std::cout << i; ++i; }
Evaluación · Bucles for, while y do-while
¿Cuándo conviene un do-while en lugar de un while?
Conversión de temperatura
Escribe una función double celsiusAFahrenheit(double celsius) que aplique la fórmula F = C 9 / 5 + 32. Llámala desde main para convertir 0, 25 y 100 grados y muestra los …
Número perfecto
Un número es perfecto si es igual a la suma de sus divisores propios (sin contarse a sí mismo). Escribe dos funciones: int sumaDivisores(int n) y bool esPerfecto(int n). …
Completa la función
int (int a, int b) { a + b; } int main() { std::cout << sumar(2, 3) << '\n'; }
Evaluación · Funciones: declaración, parámetros y retorno
¿Qué diferencia hay entre una declaración y una definición de función?
Evaluación · Funciones: declaración, parámetros y retorno
¿Qué imprime void f(int x) { x = 99; } si se llama con int a = 5; f(a); y después se imprime a?
Evaluación · Funciones: declaración, parámetros y retorno
¿Cuál de estas firmas es válida para un argumento por defecto?
Intercambio con referencias
Escribe void intercambiar(int& a, int& b) que intercambie los valores de dos variables. Llámala desde main con dos enteros, imprime antes y después, y comprueba que el ca…
Suma de dígitos recursiva
Escribe int sumaDigitos(int n) que devuelva la suma de los dígitos de un número positivo. Debe ser recursiva: el caso base es un número de un solo dígito y el caso recurs…
Completa la firma por referencia
void duplicar(int x) { x 2; } int main() { int a = 7; duplicar(a); std::cout << a << '\n'; // 14 }
Evaluación · Paso por valor, referencia, sobrecarga y recursión
¿Qué firma permite modificar la variable del llamador sin copiarla?
Evaluación · Paso por valor, referencia, sobrecarga y recursión
Con void f(long) y void f(double), ¿qué ocurre al llamar f(3)?
Evaluación · Paso por valor, referencia, sobrecarga y recursión
¿Qué falta si una función recursiva compila pero el programa aborta con un desbordamiento de pila?
Intercambiar dos números con punteros
Escribe una función void intercambiar(int a, int b) que intercambie los valores apuntados. Llámala desde main con dos variables y comprueba que ambas cambian. No uses std…
Sumar un array sin índices
Dado int datos[5] = {2, 4, 6, 8, 10};, calcula la suma recorriendo el array con un puntero (int p = datos y p++), sin usar datos[i]. Muestra el resultado.
Completa el acceso al valor
int x = 10; int p = x; std::cout << p; // debe imprimir 10 p = 20; // x pasa a 20
Evaluación · Memoria, stack, heap y punteros
Después de int x = 5; int p = &x; p = 9;, ¿cuánto vale x?
Evaluación · Memoria, stack, heap y punteros
¿Cuál es la diferencia principal entre stack y heap?
Evaluación · Memoria, stack, heap y punteros
Si int p apunta a a[0], ¿qué hace p + 2 en un sistema con int de 4 bytes?
Intercambiar con referencias
Escribe void intercambiar(int& a, int& b) que intercambie dos enteros. Llámala desde main con x = 3 e y = 8 y muestra el resultado. Compara la llamada con la versión de p…
Media de un array dinámico
Reserva con new double[n] un array de 5 valores {2.0, 4.0, 6.0, 8.0, 10.0}, calcula su media con una función que reciba const double y el tamaño, imprime el resultado y l…
Completa la reserva y la liberación
int p = int(5); std::cout << p << '\n'; p; p = ;
Evaluación · Referencias, new/delete y fugas de memoria
Tras int a = 1; int b = 2; int& r = a; r = b;, ¿cuánto valen a y b?
Evaluación · Referencias, new/delete y fugas de memoria
¿Qué ocurre con int p = new int[10]; delete p;?
Evaluación · Referencias, new/delete y fugas de memoria
¿Cuál de estas situaciones describe un puntero colgante?
Convertir new/delete en unique_ptr
El código de partida reserva un entero con new int(7), lo imprime, le suma uno y lo libera con delete. Reescríbelo usando std::makeunique, sin ningún new ni delete, y com…
Romper un ciclo con weak_ptr
Define struct Nodo { std::string nombre; std::sharedptr<Nodo> otro; };. Crea dos nodos que se apunten mutuamente con sharedptr, imprime a.usecount() y explica por qué val…
Completa la transferencia de propiedad
auto p = std::(5); std::cout << p << '\n'; auto q = std::(p); std::cout << (p == ) << '\n'; // 1
Evaluación · RAII y punteros inteligentes
¿Qué tipo expresa «este objeto tiene un único dueño que lo liberará»?
Evaluación · RAII y punteros inteligentes
auto a = std::makeshared<int>(1); auto b = a; ¿qué ocurre con el contador de a?
Evaluación · RAII y punteros inteligentes
Dos objetos se referencian con sharedptr en ambos sentidos. ¿Cuál es la consecuencia?
Estadísticas de un vector
Dado std::vector<int> notas{7, 4, 9, 6, 10}, calcula el mínimo, el máximo y la media con un solo recorrido. Imprime los tres valores separados por espacios y comprueba qu…
Contar palabras largas
Crea un std::vector<std::string> con las palabras uno, computadora, de, algoritmo, ia. Cuenta cuántas tienen más de 4 caracteres e imprime la cuenta y la palabra más larg…
Completa las operaciones del vector
std::vector<int> v; v.(10); // anade un elemento std::cout << v.() << '\n'; // 1 std::cout << v.(0) << '\n'; // 10, con comprobacion de limites
Evaluación · Arrays, std::vector y std::string
Un std::vector<int> tiene size() == 3 y capacity() == 8. ¿Qué significa?
Evaluación · Arrays, std::vector y std::string
¿Qué provoca que un int p = v.data(); quede colgante?
Evaluación · Arrays, std::vector y std::string
¿Cuál es la diferencia principal entre v[i] y v.at(i)?
Frecuencia de letras
Dada la cadena "banana", cuenta cuántas veces aparece cada letra usando un std::map<char, int> y muestra los pares ordenados por letra. El resultado debe ser a: 3, b: 1, …
Cola de atención con prioridad
Crea una std::priorityqueue<int> con las urgencias {3, 1, 4, 1, 5, 9, 2, 6}. Extrae todos los elementos e imprímelos separados por espacios. Después explica qué cambiaría…
Completa la pila
std::stack<int> pila; pila.(1); pila.(2); std::cout << pila.() << '\n'; // 2 pila.();
Evaluación · std::map, set, pilas y colas
¿Qué contenedor elegirías si necesitas recorrer las claves en orden alfabético y buscar por clave?
Evaluación · std::map, set, pilas y colas
std::map<std::string, int> m; está vacío. ¿Qué hace m["x"];?
Evaluación · std::map, set, pilas y colas
¿Cuál es la diferencia esencial entre std::stack y std::queue?
Orden descendente y conteo de mayores
Dado std::vector<int> edades{23, 15, 42, 8, 31, 19};, ordénalo de mayor a menor con std::sort y una lambda, cuenta cuántos son mayores de edad con std::countif e imprime …
Normalizar un vector con algoritmos
Dado std::vector<double> x{2.0, 4.0, 6.0, 8.0};, obtén el mínimo y el máximo con std::minelement y std::maxelement, transforma cada valor a (valor - min) / (max - min) y …
Completa el algoritmo
std::vector<int> datos{5, 1, 9, 3}; std::sort(datos.(), datos.()); auto it = std::find(datos.begin(), datos.end(), ); std::cout << std::distance(datos.begin(), it);
Evaluación · Iteradores y algoritmos STL
Si std::find(v.begin(), v.end(), 42) no encuentra el valor, ¿qué devuelve?
Evaluación · Iteradores y algoritmos STL
Guardas auto it = v.begin(); y luego llamas a v.pushback(7). ¿Qué ocurre con it?
Evaluación · Iteradores y algoritmos STL
¿Por qué std::sort(l.begin(), l.end()) no compila cuando l es un std::list?
Cuenta bancaria encapsulada
Escribe una clase CuentaBancaria con titular y saldo privados. El constructor debe rechazar saldos negativos dejándolos en cero. Añade depositar y retirar, que devuelven …
Dataset con estadísticas y contador estático
Crea una clase Dataset que reciba un std::vector<double> por valor y lo mueva a un miembro privado. Debe lanzar std::invalidargument si el vector está vacío, ofrecer medi…
Completa el constructor y el método const
class Punto { public: Punto(int x, int y) : x(), y() {} int x() { return ; } private: int x; int y; };
Evaluación · Clases, constructores y encapsulamiento
¿Qué garantiza double valor() const en una clase?
Evaluación · Clases, constructores y encapsulamiento
¿Por qué conviene inicializar en la lista : nombre(std::move(n)) en lugar de asignar en el cuerpo?
Evaluación · Clases, constructores y encapsulamiento
Si una clase declara static int instancias; pero no lo define fuera, ¿qué ocurre al usarlo?
Tres figuras y la de mayor área
Define una clase abstracta Figura con area() y nombre() puros y destructor virtual. Deriva Circulo (radio 1), Rectangulo (2x3) y Triangulo (base 4, altura 5). Guárdalas e…
Métricas MAE y RMSE tras una interfaz
Declara una interfaz Metrica con calcular(real, pred) puro y nombre() puro. Implementa MAE y RMSE para los vectores {3, 5} y {2, 7}. Recorre un std::vector<std::uniqueptr…
Completa la jerarquía
class Base { public: ~Base() = default; virtual double f() const = 0; }; class D : public Base { public: double f() const { return 1.0; } };
Evaluación · Herencia, virtual y polimorfismo
¿Por qué una clase base polimórfica necesita un destructor virtual?
Evaluación · Herencia, virtual y polimorfismo
Con Derivada d; Base& ref = d; y nombre() virtual, ¿qué devuelve ref.nombre()?
Evaluación · Herencia, virtual y polimorfismo
¿Qué ocurre al pasar un objeto Derivada a una función que recibe Base por valor?
Fracciones con operadores
Escribe una clase Racional con numerador y denominador privados que simplifique en el constructor usando std::gcd. Sobrecarga operator+, operator== y operator<< para que …
Arreglo con regla de 5
Implementa una clase Arreglo que posea un int reservado con new[]. Escribe constructor, copia profunda, asignación con copy-and-swap, constructor y asignación de movimien…
Completa los operadores
class Punto { public: Punto(int x, int y) : x(x), y(y) {} Punto +(const Punto& otro) const { return Punto{x + otro.x, y + otro.y}; } std::ostream& operator<<(std::ostream…
Evaluación · Regla de 0/3/5 y sobrecarga de operadores
Una clase reserva memoria con new[] en su constructor. ¿Qué debe declarar además del destructor?
Evaluación · Regla de 0/3/5 y sobrecarga de operadores
Después de Secuencia c = std::move(a);, ¿qué se puede afirmar de a?
Evaluación · Regla de 0/3/5 y sobrecarga de operadores
¿Por qué operator<< se declara como función libre y no como método de la clase?
Sumar los elementos de un vector
Escribe una plantilla sumavector que reciba const std::vector<T>& y devuelva la suma de sus elementos. Pruébala con {1, 2, 3} y con {1.5, 2.0, 2.5}. No uses std::accumula…
Un mínimo restringido con concepts
Define un concept Ordenable que exija a < b convertible a bool y una función minimo restringida a él, que devuelva el menor elemento de un std::vector<T>. Si el vector es…
Completa la plantilla
<typename T> T menor(T a, T b) { return (a < b) ? : b; } int main() { std::cout << menor(9, 4); // 4 std::cout << menor(2.5, 7.5); // 2.5 }
Evaluación · Templates y programación genérica
¿Cuándo se genera el código de template <typename T> T doble(T x)?
Evaluación · Templates y programación genérica
maximo(3, 4.5) no compila. ¿Cuál es la corrección más directa?
Evaluación · Templates y programación genérica
¿Para qué sirve typename en typename T::valuetype x;?
Filtrar, transformar y sumar
Dado std::vector<int> datos{1, 2, 3, 4, 5, 6};, usa std::transform con una lambda para elevar al cuadrado solo los pares en un vector nuevo, y luego suma el resultado con…
Ranking de alumnos
Define struct Alumno { std::string nombre; double nota; }; y crea un vector con cuatro alumnos. Ordénalo por nota de mayor a menor y, en caso de empate, por nombre alfabé…
Completa la captura y la llamada
std::vector<int> v{4, 1, 7, 3}; int limite = 3; auto supera = [](int x) { return x > limite; // debe ver el valor actual }; limite = 5; auto total = std::countif(v.begin(…
Evaluación · Lambdas, range-for y C++ moderno
¿Qué imprime este código? int x = 2; auto f = [x]() { return x; }; x = 9; std::cout << f();
Evaluación · Lambdas, range-for y C++ moderno
¿Cuándo es preferible std::function frente a auto para guardar una lambda?
Evaluación · Lambdas, range-for y C++ moderno
¿Por qué es peligroso return [&local]() { return local; }; desde una función?
Mueve un buffer con asignación
Implementa una clase Buffer con un array dinámico de int, constructor por tamaño, destructor, copia prohibida, constructor de movimiento y asignación de movimiento. En ma…
Describe un variant de configuración
Define using Config = std::variant<int, double, std::string>; y una función std::string describir(const Config&) que devuelva entero: N, real: X con una cifra decimal o t…
Completa el código
std::<double> resultado = dividir(8.0, 2.0); if (resultado) { std::cout << resultado; // 4 } std::string nombre = "modelo"; std::string copia = std::(nombre); // transfer…
Evaluación · Move semantics, optional y variant
¿Qué hace exactamente std::move(x)?
Evaluación · Move semantics, optional y variant
Después de std::string a = "modelo"; std::string b = std::move(a);, ¿qué puedes afirmar de a?
Evaluación · Move semantics, optional y variant
¿Cuál es la forma correcta de devolver un vector local por valor?
Raíz cuadrada con dominio validado
Escribe double raiz(double x) que lance std::domainerror si x < 0 y devuelva std::sqrt(x) en caso contrario. En main, prueba con 16 y con -4 dentro de un try, captura con…
Suma paralela con cuatro hilos
Suma los enteros de 1 a 1 000 000 usando cuatro hilos. Cada hilo debe calcular su parcial en una variable local y sumarlo a un long long compartido dentro de un std::lock…
Completa el manejo y el bloqueo
try { lanzar(); } (const std::exception& e) { std::cout << e.(); } std::mutex m; std::<std::mutex> bloqueo(m);
Evaluación · Excepciones y std::thread
¿Por qué se captura con const std::exception& en lugar de std::exception?
Evaluación · Excepciones y std::thread
¿Qué ocurre si un std::thread sigue unible cuando se destruye?
Evaluación · Excepciones y std::thread
¿Qué protege exactamente std::lockguard<std::mutex> bloqueo(m);?
Tres formas de sumar un vector
Mide el tiempo de sumar veinte millones de double con índice, con range-for y con std::accumulate. Imprime las tres sumas y los tres tiempos. ¿Cuál gana?
Sumar por columnas sin saltar de fila
Una matriz de 1024 por 1024 está guardada por filas. Calcula la suma de cada columna de dos formas: recorriendo cada columna de arriba abajo y recorriendo las filas una s…
Completa el cronómetro
const auto inicio = std::chrono::::now(); trabajopesado(datos); const auto fin = std::chrono::steadyclock::now(); const double ms = std::chrono::duration<double, std::mil…
Evaluación · Optimización, profiling y complejidad
Un algoritmo tarda 1 segundo con 1 000 elementos y su coste es O(n²). ¿Cuánto tardará aproximadamente con 10 000 elementos?
Evaluación · Optimización, profiling y complejidad
¿Por qué recorrer una matriz guardada por filas en orden de columnas es más lento?
Evaluación · Optimización, profiling y complejidad
Mides una función, no imprimes su resultado y el cronómetro marca 0,00 ms. ¿Qué ha pasado?
Suma de cuadrados en paralelo
Calcula la suma de los cuadrados de los enteros de 0 a 49 999 999 con OpenMP y con un bucle secuencial. Compara los dos resultados en el programa y mide los tiempos con s…
Arreglar el false sharing
Toma el programa de los dos contadores, mide la versión con los campos juntos y cámbiala para que cada contador viva en su propia línea de caché. Comprueba que los result…
Completa la directiva
double suma = 0.0; pragma omp for (+ : suma) schedule(static) for (std::sizet i = 0; i < v.size(); ++i) { suma += v[i]; }
Evaluación · Paralelismo, SIMD y grandes volúmenes
¿Qué hace exactamente reduction(+ : suma) en una directiva OpenMP?
Evaluación · Paralelismo, SIMD y grandes volúmenes
Dos hilos incrementan contadores distintos que están en la misma línea de caché. ¿Qué ocurre?
Evaluación · Paralelismo, SIMD y grandes volúmenes
Un bucle suma cincuenta millones de double y la versión con diez hilos solo es dos veces más rápida. ¿Cuál es la explicación más probable?
Resolver un sistema 3×3 y comprobar el residuo
Resuelve el sistema cuya matriz es [[2, 1, 0], [1, 3, 1], [0, 1, 4]] con término independiente [3, 5, 5]. Usa partialPivLu() e imprime la solución y la norma del residuo …
Ajustar una recta a cinco puntos
Con los puntos x = 1, 2, 3, 4, 5 e y = 3, 5, 7, 9, 11, monta la matriz X con una columna de unos y resuelve por mínimos cuadrados. ¿Qué pendiente e intercepto obtienes? C…
Completa la resolución
Eigen::Matrix3d A; A << 2, 1, 0, 1, 3, 1, 0, 1, 4; Eigen::Vector3d b; b << 3, 5, 5; const Eigen::Vector3d x = A.().solve(b); std::cout << A.() << '\n'; // la matriz con f…
Evaluación · Eigen: álgebra lineal en C++
¿Qué tipo de Eigen usarías para una matriz de 3 por 3 de double cuyo tamaño no cambia?
Evaluación · Eigen: álgebra lineal en C++
A es simétrica y definida positiva. ¿Qué descomposición conviene para resolver Ax = b?
Evaluación · Eigen: álgebra lineal en C++
¿Por qué auto C = A + B; es peligroso en Eigen?
Comprobar la pérdida de tres modelos
Usa la función mse para calcular la pérdida de tres modelos sobre los mismos datos: (w=0, b=0), (w=1.5, b=0.5) y (w=2, b=0). Antes de ejecutar, calcula a mano el primero …
Parar cuando el gradiente sea pequeño
Añade al bucle de entrenamiento una condición de parada: detente cuando |gw| y |gb| sean menores que 0.001. Imprime la época en la que ocurre y los parámetros en ese mome…
Completa la actualización
for (std::sizet i = 0; i < n; ++i) { const double error = w x[i] + b - ; gw += 2.0 error / n; gb += 2.0 error / n; } w -= gw; b -= lr gb;
Evaluación · Machine Learning desde cero en C++
Con w = 0 y b = 0, ¿cuánto vale el MSE sobre x = [1, 2, 3, 4], y = [2, 4, 6, 8]?
Evaluación · Machine Learning desde cero en C++
Si el gradiente respecto de w es negativo, ¿qué hace un paso de gradiente descendente?
Evaluación · Machine Learning desde cero en C++
La pérdida baja durante veinte épocas y de repente empieza a crecer hasta infinito. ¿Cuál es la causa más probable?
Producto escalar con argumentos con nombre
Escribe un módulo vectorops con una función productopunto(a, b) que reciba dos listas de double, compruebe que tienen la misma longitud, lance std::invalidargument si no …
Una clase con propiedad de solo lectura
Publica una clase Contador con incrementar(), reiniciar() y una propiedad valor que no se pueda asignar desde Python. Añade un repr. Comprueba en el intérprete que contad…
Completa el binding
PYBIND11MODULE(, m) { m.def("escalar", &escalar, , py::arg("factor"), "Multiplica el vector por factor"); }
Evaluación · Integración con Python y pybind11
Declaras PYBIND11MODULE(faststats, m) pero el archivo se llama faststats.cpp. ¿Qué ocurre al importar?
Evaluación · Integración con Python y pybind11
Quieres que una función C++ reciba una lista de Python como std::vector<double>. ¿Qué añades?
Evaluación · Integración con Python y pybind11
¿Cuándo es seguro añadir py::callguard<py::gilscopedrelease>() a una función?
Traspuesta y una identidad algebraica
Añade una función Matrix traspuesta(const Matrix& m) que devuelva una matriz de dimensiones intercambiadas. Comprueba con casiigual que (A B)ᵀ = Bᵀ Aᵀ para una A de 2x3 y…
Producto matriz-vector con validación
Implementa std::vector<double> productomatrizvector(const Matrix& m, const std::vector<double>& v). Debe lanzar std::invalidargument si m.columnas() != v.size() y devolve…
Completa el indexado y el acumulador
// m(i, j) vive en esta posicion del buffer contiguo std::sizet k = i + j; // producto: la celda se acumula, no se asigna resultado(i, j) a(i, k) b(k, j);
Evaluación · Proyecto: motor matricial
En una Matrix de 3 filas y 4 columnas almacenada por filas, ¿en qué posición vive m(2, 1)?
Evaluación · Proyecto: motor matricial
¿Por qué la multiplicación recorre los bucles en orden i-k-j y no i-j-k?
Evaluación · Proyecto: motor matricial
Matrix a(2, 2); Matrix b(3, 3); auto c = a b; ¿Qué ocurre?
Predicción por lotes
Escribe predecirlote para aplicar el modelo a cada fila de un lote, reservando el vector de salida. Pruébalo con [[34, 2500, 4, 1200], [52, 7000, 15, 300]] y comprueba qu…
Recarga en caliente sin carreras
Envuelve el modelo en ModeloServible con un std::sharedmutex: predecir toma el candado compartido y recargar el exclusivo, cargando el archivo nuevo fuera del candado. Co…
Completa la sigmoide
include <cmath> double probabilidad(double z) { return 1.0 / (1.0 + std::()); }
Evaluación · Proyecto: servidor de inferencia
El cliente envía {"features": [34, 2500]} a un modelo de 4 features. ¿Qué debe responder el servidor?
Evaluación · Proyecto: servidor de inferencia
¿Por qué el modelo se declara inmutable después de cargarlo?
Evaluación · Proyecto: servidor de inferencia
Con el pool por defecto, 50 clientes con keep-alive provocan esperas de segundos. ¿Cuál es la causa más probable?
Ficha personal
Crea un archivo ficha.py con tres variables: tu nombre, tu edad y tu lenguaje favorito. Muestra tres líneas usando f-strings, con el formato: Me llamo , Tengo años y Quie…
Completa la salida
nombre = "Ada" edad = 20 print("Hola,", ) print("Tienes", , "años")
Evaluación · ¿Qué es Python y cómo preparar tu entorno?
¿Qué hace exactamente el intérprete de Python?
Evaluación · ¿Qué es Python y cómo preparar tu entorno?
¿Cuál de estas líneas es un comentario válido en Python?
De Celsius a Fahrenheit
Guarda 37.0 en celsius y calcula los grados Fahrenheit con F = C 9 / 5 + 32. Muestra el resultado con un decimal, por ejemplo 37 °C = 98.6 °F. Después prueba con -5.0 y c…
Promedio de notas que llegan como texto
Tres notas llegan como cadenas: "16", "14.5" y "18". Convierte cada una al tipo numérico adecuado, calcula el promedio y muéstralo con dos decimales. El resultado esperad…
Completa la conversión
edadtexto = "21" edad = print(edad + 1) print((edad))
Evaluación · Variables y tipos de datos
¿Qué tipo tiene el resultado de 10 / 2?
Evaluación · Variables y tipos de datos
¿Qué imprime precio = "12.5" seguido de print(precio 2)?
Evaluación · Variables y tipos de datos
Después de a = 10, b = a y a = 20, ¿qué vale b?
Promedio ponderado con dos decimales
Un alumno obtuvo 15 en prácticas, 18 en el examen y 12 en el proyecto. Las ponderaciones son 20 %, 50 % y 30 %. Calcula el promedio y muéstralo con dos decimales. Después…
Minutos a horas y minutos
Guarda 347 en totalminutos, calcula las horas completas y los minutos sobrantes, y muestra 347 minutos = 5 h 47 min. Resuélvelo solo con // y %.
Completa la expresión
precio = 120 descuento = precio 0.10 total = precio - descuento print(total 100) print(total > 100 total < 120)
Evaluación · Operadores y expresiones
¿Qué imprime print(7 // 2, 7 % 2)?
Evaluación · Operadores y expresiones
¿Cuál es el valor de 2 + 3 4 2?
Evaluación · Operadores y expresiones
¿Qué devuelve 0 or "sin dato"?
Clasificar el índice de masa corporal
Con peso = 72 y altura = 1.75, calcula el IMC con peso / altura 2 y clasifícalo: menos de 18.5 es bajo, menos de 25 es normal, menos de 30 es sobrepeso y el resto obesida…
Año bisiesto
Pide un año guardado en anio y decide si es bisiesto con la regla: divisible entre 4, salvo los múltiplos de 100 que no sean múltiplos de 400. Comprueba con 2024 (sí), 19…
Completa la cadena
nota = 14 if nota >= 18: nivel = "excelente" nota >= 13: nivel = "bueno" else: nivel = "insuficiente" print()
Evaluación · Condicionales: if, elif y else
Con valor = 0, ¿qué bloque se ejecuta en if valor: ... else: ...?
Evaluación · Condicionales: if, elif y else
Con x = 12, ¿qué imprime if x > 10: print("A") elif x > 5: print("B") else: print("C")?
Evaluación · Condicionales: if, elif y else
¿Cuál es la salida de estado = "apto" if 13 >= 13 else "no apto"?
Suma de pares del 1 al 20
Suma todos los números pares entre 1 y 20 inclusive y muestra el total. El resultado debe ser 110. Resuélvelo con un for y un acumulador, sin escribir la lista a mano.
Factorial con un bucle
Calcula el factorial de 6, es decir, 1 2 3 4 5 6, usando un for y una variable que empiece en 1. Muestra el resultado, que debe ser 720.
Completa el acumulador
total = 0 for numero in (1, 6): total numero print(total)
Evaluación · Bucles: while, for y control de iteraciones
¿Qué números produce range(2, 10, 3)?
Evaluación · Bucles: while, for y control de iteraciones
¿Cuántas veces se ejecuta el cuerpo de for i in range(4):?
Evaluación · Bucles: while, for y control de iteraciones
En for n in [1, 2, 3]: if n == 2: break, ¿qué ocurre?
Iniciales y vocales
Pide un nombre completo separado por espacios, por ejemplo "Ada King Lovelace". Muestra sus iniciales unidas por puntos (sin punto final) y cuenta cuántas vocales contien…
Completa el corte
s = "abcdefgh" print(s[:]) debe mostrar cdef print(s[]) debe mostrar h print(s[]) debe mostrar a
Nombre de usuario
A partir de " Ada King Lovelace ", genera un usuario con la forma a.lovelace: la inicial del primer nombre, un punto y el último apellido, todo en minúsculas y sin espaci…
Evaluación · Strings, índices y slicing
¿Qué devuelve "Python"[1:4]?
Evaluación · Strings, índices y slicing
Después de s = "hola" y s.upper(), ¿qué contiene s?
Evaluación · Strings, índices y slicing
¿Cuántos elementos produce "a,b,,c".split(",")?
Lista de compras
Crea una lista vacía llamada compra. Añade "pan" y "leche" con append, inserta "huevos" al principio y elimina "pan" con remove. Muestra la lista final y cuántos producto…
Completa las operaciones
notas = [12, 18, 7] notas.(15) añadir al final primera = notas.(0) sacar la primera notas.() ordenar de menor a mayor print(primera, notas)
Promedio sin extremos
Dada notas = [14, 6, 18, 20, 9], calcula el promedio descartando la nota más baja y la más alta. Ordena una copia para no alterar la lista original, elimina los extremos …
Evaluación · Listas y tuplas
Después de a = [1, 2], b = a y b.append(3), ¿qué vale a?
Evaluación · Listas y tuplas
¿Qué devuelve sorted([3, 1, 2]) y qué deja en la lista original?
Evaluación · Listas y tuplas
¿Cuál de estas operaciones sobre una lista de 10 000 elementos es más cara?
Frecuencia de palabras
Dado el texto "sol mar sol viento mar sol", construye un diccionario que asocie cada palabra con su número de apariciones. Recorre las palabras con split() y muestra el r…
Consulta segura y recorrido
edades = {"Ana": 21, "Luis": 19} print(edades.("Eva", 0)) for nombre, edad in edades.(): print(nombre, edad)
Visitantes de dos días
El lunes visitaron la web {"ana", "luis", "eva"} y el martes {"luis", "eva", "mario"}. Calcula quiénes repitieron, quiénes son nuevos el martes y cuántos usuarios distint…
Evaluación · Diccionarios y conjuntos
¿Qué devuelve {"a": 1}.get("b")?
Evaluación · Diccionarios y conjuntos
¿Por qué {[1, 2]: "valor"} falla?
Evaluación · Diccionarios y conjuntos
Si a = {1, 2, 3} y b = {2, 3, 4}, ¿qué contiene a & b?
Precios con descuento
Dada precios = [45, 120, 80, 250, 30], crea una lista con los precios mayores a 50 rebajados un 10 %. Muestra la lista resultante y cuántos productos quedaron fuera del d…
Completa la comprensión
numeros = [3, 8, 1, 10] mayores = [n for in numeros n > 5] cuadrados = {n: for n in numeros} print(mayores, cuadrados)
Resumen de inventario
Tienes productos = ["teclado", "mouse", "monitor"] y precios = [120, 45, 300]. Construye un diccionario con los productos que cuestan más de 100, aplicando un 5 % de desc…
Evaluación · Recorridos y comprensiones
¿Qué produce [n 2 for n in [1, 2, 3] if n != 2]?
Evaluación · Recorridos y comprensiones
¿Qué devuelve list(zip([1, 2, 3], ["a", "b"]))?
Evaluación · Recorridos y comprensiones
¿Cuándo es mejor un bucle for que una comprensión?
Temperatura media
Escribe una función afahrenheit(celsius) que devuelva la conversión con la fórmula c 9 / 5 + 32, y otra promedio(datos) que devuelva la media de una lista no vacía. Despu…
Completa el área
def arearectangulo(base, altura): """Devuelve el área del rectángulo.""" return print(arearectangulo(4, 3))
Descuento por tramo
Una tienda aplica 5 % de descuento a partir de 100 y 10 % a partir de 300. Escribe descuentopara(monto) que devuelva el porcentaje, y totalfinal(monto) que lo aplique y d…
Evaluación · Funciones: parámetros y retorno
¿Qué devuelve una función cuyo cuerpo termina sin ejecutar ningún return?
Evaluación · Funciones: parámetros y retorno
¿Qué ocurre al ejecutar únicamente def f(): print("hola")?
Evaluación · Funciones: parámetros y retorno
Con def f(a, b=2), ¿cuál de estas llamadas falla?
Resumen de ventas
Escribe resumen(ventas) que devuelva una tupla con la cantidad de ventas, el total y el promedio. Si no recibe nada, debe devolver (0, 0, 0) sin lanzar errores. Prueba co…
Completa la firma flexible
def mostrar(, ): print(args, kwargs) mostrar(1, 2, nombre="Ada")
Ficha de usuario con opciones
Escribe crearusuario(nombre, , rol="alumno", extra) que devuelva un diccionario con nombre, rol y todos los pares adicionales. Llama una vez solo con el nombre y otra con…
Evaluación · Argumentos flexibles y alcance de variables
Dentro de def f(args), ¿qué tipo tiene args?
Evaluación · Argumentos flexibles y alcance de variables
¿Qué imprime este código? python def f(x, lista=[]): lista.append(x) return lista print(f(1)) print(f(2))
Evaluación · Argumentos flexibles y alcance de variables
En x = 10 global y una función que hace x = x + 1 sin declarar global, ¿qué ocurre al llamarla?
Catálogo ordenado
Tienes una lista de diccionarios con nombre y precio. Ordénala de mayor a menor precio usando sorted y una lambda como key, y muestra solo los nombres en ese orden. Despu…
Completa la transformación
doble = x: x 2 print(doble(4)) print(list( (doble, [1, 2, 3])))
Suma de dígitos recursiva
Escribe sumadigitos(n) que devuelva la suma de los dígitos de un entero positivo sin convertirlo a texto. Debe ser recursiva: el caso base es un número de una cifra y el …
Evaluación · Lambda, map/filter/reduce y recursividad
¿Qué devuelve sorted(["bb", "a", "ccc"], key=len)?
Evaluación · Lambda, map/filter/reduce y recursividad
¿Qué muestra print(map(str.upper, ["a", "b"])) en Python 3?
Evaluación · Lambda, map/filter/reduce y recursividad
¿Cuál es la condición indispensable para que una función recursiva termine?
Cuenta con saldo protegido
Escribe una clase Cuenta con titular y un saldo inicial de 0 guardado en saldo. Añade depositar(monto) y retirar(monto), que rechacen montos no positivos y retiros mayore…
Completa el constructor
class Perro: def init(, nombre): .nombre = nombre def ladrar(self): return f"{self.nombre} dice guau" print(Perro("Toby").ladrar())
Producto con historial de precios
Crea Producto con nombre, precio y un historial vacío. El método cambiarprecio(nuevo) debe guardar el precio anterior en el historial y actualizar el actual. Crea dos pro…
Evaluación · Clases y objetos
¿Qué es self dentro de un método?
Evaluación · Clases y objetos
Con class C: items = [] y dos instancias a y b, tras a.items.append(1), ¿qué vale b.items?
Evaluación · Clases y objetos
¿Cuál de estas afirmaciones sobre init es correcta?
Figuras con área obligatoria
Crea una clase abstracta Figura con un método abstracto area() y un método concreto describir() que devuelva el nombre de la clase y el área con dos decimales. Implementa…
Nómina con sobrescritura y super()
Modela Empleado(nombre, base) con un método sueldo() que devuelva el sueldo base. Crea Vendedor(nombre, base, ventas), que suma un 10 % de las ventas, y Gerente(nombre, b…
Completa el contrato abstracto
from abc import ABC, class Forma(): @abstractmethod def area(self): ... class Cuadrado(Forma): def init(self, lado): self.lado = lado def area(self): return self.lado 2 p…
Evaluación · Herencia, polimorfismo y abstracción
¿Qué hace exactamente super().init(nombre) dentro del init de Perro?
Evaluación · Herencia, polimorfismo y abstracción
Con class D(B, C), donde B y C heredan de A, B no define saludar y C sí, ¿qué versión se ejecuta al llamar D().saludar()?
Evaluación · Herencia, polimorfismo y abstracción
¿En cuál de estos casos NO conviene usar herencia?
Cuenta con saldo protegido
Crea CuentaBancaria(titular, saldo) donde saldo sea una propiedad con setter que rechace valores negativos con ValueError. Añade depositar(monto) y retirar(monto), que ta…
Inventario con len, suma y constructor alternativo
Diseña Inventario a partir de un diccionario producto → unidades. Implementa len para que devuelva el total de unidades (no el número de productos), add para combinar dos…
Completa la propiedad
class Termometro: def init(self, celsius): self.celsius = celsius @ def celsius(self): return self.celsius @celsius. def celsius(self, valor): self.celsius = valor t = Te…
Evaluación · Métodos especiales, propiedades y classmethods
¿Qué imprime print([Punto(1, 2)]) si la clase define str como "(1, 2)" y repr como "Punto(1, 2)"?
Evaluación · Métodos especiales, propiedades y classmethods
¿Por qué eq debería devolver NotImplemented en lugar de False cuando el otro objeto no es del tipo esperado?
Evaluación · Métodos especiales, propiedades y classmethods
Tienes @property def saldo(self) sin setter. ¿Qué ocurre al ejecutar cuenta.saldo = 100?
Carrito con calculadora de impuestos
Crea CalculadoraIGV(tasa) con un método calcular(subtotal) que devuelva el subtotal con impuesto redondeado a dos decimales. Crea Carrito(calculadora) que acumule precios…
Monitor con fuente, regla y notificador
Compón un monitor de temperatura a partir de tres objetos: una fuente con leer() que devuelva una lista de lecturas, una regla con evaluar(valor) que diga si supera un lí…
Completa la delegación del informe
class Informe: def init(self, fuente, limpiador): self.fuente = self.limpiador = limpiador def generar(self): filas = self.fuente.() return self.limpiador.limpiar()
Evaluación · Composición y diseño de clases
class Auto guarda un Motor en self.motor y llama a self.motor.arrancar(). ¿Qué relación modela?
Evaluación · Composición y diseño de clases
¿Por qué def init(self, pasos=[]) es un error frecuente en una clase con varios objetos?
Evaluación · Composición y diseño de clases
Tu Informe llama a fuente.leer(), limpiador.limpiar(...) y resumen.calcular(...), y no importa ninguna de esas clases. ¿Qué ventaja aporta?
Conversor con excepción de formato
Define ErrorDeFormato(campo, valor) que herede de Exception, guarde ambos datos y construya un mensaje como edad: 'treinta' no es un entero. Escribe aentero(texto, campo)…
Configuración validada con else
Escribe leerpuerto(config) que exija la clave puerto, la convierta a entero y compruebe que esté entre 1 y 65535. Cada problema debe lanzar una ErrorDeConfiguracion disti…
Completa el manejo de la conversión
texto = "42" try: valor = int(texto) ValueError: print("no es un número") : print("conversión correcta:", valor)
Evaluación · Errores y excepciones
En un bloque try/except/else/finally, ¿cuándo se ejecuta else?
Evaluación · Errores y excepciones
¿Qué diferencia hay entre except ValueError: y except:?
Evaluación · Errores y excepciones
Una función lanza EdadInvalida, que hereda de ErrorDeValidacion, que hereda de Exception. ¿Qué cláusula la captura en try/except ErrorDeValidacion?
Diario con resumen en JSON
Crea diario.txt con cuatro líneas, una por día, y vuelve a leerlo línea por línea. Cuenta cuántas líneas tiene, guarda la más larga y escribe ambas cifras en resumen.json…
Informe por producto desde un CSV
Parte de un ventas.csv con columnas producto,unidades,precio. Calcula el importe total por producto, guárdalo en informe.json ordenado por clave e imprime el resultado. S…
Completa el guardado y la lectura
import json with ("datos.json", "w", encoding="utf-8") as f: json.(datos, f, ensureascii=False, indent=2) with open("datos.json", encoding="utf-8") as f: recuperado = jso…
Evaluación · Archivos, JSON y CSV
Abres un archivo existente con open("datos.txt", "w"). ¿Qué ocurre en ese instante?
Evaluación · Archivos, JSON y CSV
¿Por qué with open(...) as f es preferible a f = open(...) seguido de f.close()?
Evaluación · Archivos, JSON y CSV
Lees un CSV con csv.DictReader y ejecutas int(fila["unidades"]) 120. La columna contiene "3". ¿Por qué hace falta int()?
Sensor infinito con límite
Escribe un generador lecturas(inicio) que produzca temperaturas sin fin, subiendo 1.5 grados en cada paso, y usa itertools.islice para imprimir solo las cinco primeras. C…
Pipeline de tres etapas
Parte de una lista de diccionarios de ventas con producto, sede, unidades y precio. Construye tres generadores encadenados: uno filtra por sede, otro calcula el importe d…
Completa el generador de pares
def pares(limite): n = 0 while n <= limite: n cede el valor y se suspende n += 2 for valor in pares(4): print()
Evaluación · Iteradores y generadores
¿Qué hace exactamente yield valor dentro de una función?
Evaluación · Iteradores y generadores
Tienes g = (x for x in range(3)) y ejecutas list(g) dos veces. ¿Qué obtienes?
Evaluación · Iteradores y generadores
¿Cuál de estas estructuras mantiene un uso de memoria constante al recorrer un millón de registros?
Contador de llamadas
Escribe un decorador contarllamadas que lleve la cuenta de cuántas veces se invoca cada función y lo muestre antes del resultado. El contador debe sobrevivir entre llamad…
Decorador con parámetros
Crea @repetir(n), un decorador que llame a la función n veces y devuelva la lista de resultados. Úsalo con una función sin argumentos y con otra que reciba uno. Después p…
Completa el decorador
import functools def saludar(func): @functools.(func) def envoltura(args, kwargs): print("inicio") return (args, kwargs) return envoltura
Evaluación · Closures y decoradores
¿Qué significa exactamente escribir @cronometrar encima de def tarea():?
Evaluación · Closures y decoradores
¿Por qué la envoltura se escribe con def envoltura(args, kwargs)?
Evaluación · Closures y decoradores
Aplicas @registrar sobre @reintentar(3) sobre def descargar(). ¿Qué se ejecuta primero al llamar a descargar()?
Producto inmutable y validado
Crea una dataclass Producto con nombre: str, precio: float y stock: int. Debe ser inmutable, rechazar precios negativos con ValueError, ofrecer una propiedad disponible q…
Tipar un resumen de notas
Escribe promedio(notas: list[float]) -> float que devuelva 0.0 si la lista está vacía y el promedio redondeado a dos decimales en caso contrario. Añade una dataclass Estu…
Completa la dataclass
from dataclasses import dataclass, field @dataclass class Curso: nombre: str notas: [float] = field(defaultfactory=list) def promedio(self) -> return round(sum(self.notas…
Evaluación · Type hints y dataclasses
¿Qué ocurre en tiempo de ejecución con def f(x: int) -> str: si llamas f("hola")?
Evaluación · Type hints y dataclasses
¿Qué significa Optional[float] en una anotación de retorno?
Evaluación · Type hints y dataclasses
¿Por qué alumnos: list = [] falla dentro de una dataclass?
Un módulo con guardián
Crea temperaturas.py con dos funciones: caf(celsius) y fac(fahrenheit). Añade un bloque if name == "main": que imprima la conversión de 25 °C y de 212 °F. Ejecuta el arch…
Convertir un script en módulo reutilizable
Tienes un script que calcula estadísticas de ventas e imprime todo al ejecutarse. Sepáralo: crea analisis.py con una función resumen(ventas) que devuelva un diccionario c…
Completa los imports
import as st from math import datos = [2, 4, 6] print((datos)) print(sqrt(81))
Evaluación · Módulos, paquetes y entornos virtuales
Importas el mismo módulo en dos archivos distintos del programa. ¿Qué ocurre?
Evaluación · Módulos, paquetes y entornos virtuales
¿Qué imprime print(name) cuando ejecutas python3 conversiones.py directamente?
Evaluación · Módulos, paquetes y entornos virtuales
¿Qué problema resuelve un entorno virtual?
Probar un límite con parametrización
Escribe testedad.py para una función esmayordeedad(edad) que devuelve True desde los 18 años. Cubre el límite con parametrize (17, 18 y 65) y añade una prueba de que un t…
Registrar un cálculo con errores controlados
Crea factura.py con totalfactura(cantidad, precio). Si cantidad es menor o igual que cero, lanza ValueError con un mensaje que incluya el valor. Si es válida, registra el…
Completa la configuración de logging
import logging logging.basicConfig(level=logging., format="%(levelname)s %(message)s") log = logging.getLogger() log.("inicio del proceso")
Evaluación · Testing, logging y debugging
Ejecutas un script con python3 -O que contiene assert cantidad > 0. ¿Qué ocurre si cantidad vale 0?
Evaluación · Testing, logging y debugging
Creas pruebasprecio.py con una función def probarprecio(): y ejecutas pytest. ¿Qué ocurre?
Evaluación · Testing, logging y debugging
Un guardado de informe falla y el proceso puede continuar con el siguiente informe. ¿Qué nivel de log es el más adecuado?
Tres descargas con un pool de hilos
Usa ThreadPoolExecutor para simular tres descargas de un segundo cada una con time.sleep. Recoge los resultados en una lista con pool.map e imprime cuántos segundos tardó…
Cancelar una consulta lenta
Escribe una corrutina consultar(nombre, segundos) que espere y devuelva un texto. Desde main, envuélvela con asyncio.waitfor(..., timeout=0.5) para una consulta de dos se…
Completa la corrutina
import asyncio def consultar(nombre): print("consultando", nombre) asyncio.sleep(1) async def main(): await asyncio.(consultar("a"), consultar("b")) asyncio.run(main())
Evaluación · Concurrencia, multiprocessing y asyncio
¿Qué implica el GIL de CPython en la práctica?
Evaluación · Concurrencia, multiprocessing y asyncio
Tienes que redimensionar 500 imágenes y la operación tarda 200 ms de CPU en cada una. ¿Qué modelo conviene?
Evaluación · Concurrencia, multiprocessing y asyncio
Dentro de una corrutina llamas a time.sleep(3) en lugar de await asyncio.sleep(3). ¿Qué ocurre?
Analizar notas sin bucles
Crea un ndarray con las notas 10, 14, 18, 8, 16. Calcula la media, la nota máxima y cuántas aprueban con umbral 13 usando una máscara booleana. Después suma 2 puntos solo…
Centrar y predecir con producto matricial
Parte de una matriz X de 3 × 2, réstale la media de cada columna con broadcasting y calcula y = Xc @ w + b con w = [0.5, -1.0] y b = 2.0. Imprime la matriz centrada, las …
Completa el análisis de una matriz
import numpy as np X = np.array([[1, 2], [3, 4], [5, 6]]) print(X.) print(X[:, ]) print(X.(axis=0))
Evaluación · NumPy: vectores, matrices y vectorización
¿Cuál es el shape de np.array([[1, 2, 3], [4, 5, 6]])?
Evaluación · NumPy: vectores, matrices y vectorización
X tiene shape (4, 3) y media tiene shape (3,). ¿Qué hace X - media?
Evaluación · NumPy: vectores, matrices y vectorización
Modificas col = X[:, 0] con col[0] = 99. ¿Qué pasa con X?
Resumen de una Series
Crea una Series llamada unidades con los valores 120, 80, 45 y 95, usando como índice los productos café, té, jugo y agua. Muestra el total, la media redondeada a dos dec…
Completa el filtro y el resumen
import pandas as pd df = pd.readcsv("ventas.csv") lima = df[df[""] == "Lima"] promedio = lima["ingreso"].() resumen = df.groupby("sede")["ingreso"].() print(promedio, res…
Nulos y total por sede
Parte de una tabla de pedidos con columnas cliente, sede y monto, donde un monto es None. Rellena ese hueco con la mediana, calcula el total por sede y muestra cuántos pe…
Evaluación · Pandas: Series y DataFrames
¿Qué diferencia hay entre df.loc[2] y df.iloc[2]?
Evaluación · Pandas: Series y DataFrames
Después de df["ingreso"] = df["unidades"] df["precio"], ¿qué se guarda en la nueva columna?
Evaluación · Pandas: Series y DataFrames
Tienes pedidos de una sede que no aparece en el catálogo y usas merge(..., how="left"). ¿Qué ocurre?
Diagnóstico y limpieza mínima
Con una tabla de seis pedidos donde ciudad tiene dos nulos y hay una fila repetida, muestra cuántas filas, nulos y duplicados hay. Después normaliza ciudad con strip y ti…
Completa la limpieza
df["ciudad"] = df["ciudad"].str.strip().str.() df["monto"] = df["monto"].fillna(df["monto"].()) df = df.(subset=["pedido"])
Detectar extremos con el rango intercuartílico
Usa los quince montos de la matriz: 120, 135, 128, 95, 110, 102, 4200, 130, 125, 210, 198, 205, 150, 160 y 155. Calcula el primer cuartil, el tercero, el rango intercuart…
Evaluación · Limpieza de datos
¿Qué hace df.dropna() sin argumentos?
Evaluación · Limpieza de datos
Tienes df["monto"].fillna(0) sin asignar el resultado. ¿Qué ocurre?
Evaluación · Limpieza de datos
¿Por qué conviene normalizar el texto antes de eliminar duplicados?
Barras con referencia
Dibuja un gráfico de barras con las unidades vendidas de café, té, jugo y agua: 120, 80, 45 y 95. Añade título, etiqueta del eje vertical con la unidad, una línea horizon…
Completa el gráfico
fig, ax = plt.(figsize=(6, 3)) ax.(meses, ventas) ax.set("Ventas mensuales") fig.savefig("ventas.png", dpi=150)
Detectar una distribución sesgada
Con los montos 12, 15, 18, 20, 22, 25, 30 y 95, dibuja un histograma y un diagrama de caja en dos subplots. Calcula la media y la mediana, y explica en una línea por qué …
Evaluación · Matplotlib y Seaborn
¿Qué devuelve plt.subplots(2, 2)?
Evaluación · Matplotlib y Seaborn
Tienes ventas de cuatro productos sin relación temporal. ¿Qué gráfico responde mejor a «cuál vende más»?
Evaluación · Matplotlib y Seaborn
Un gráfico de barras empieza el eje vertical en 95 en lugar de 0. ¿Qué efecto tiene?
El efecto de un valor extremo
Con los montos 12, 15, 18, 20, 22, 25, 30 y 95, calcula media, mediana, desviación estándar y rango intercuartílico. Repite el cálculo sin el valor 95 y compara. Explica …
Completa el resumen
promedio = df["nota"].() mediana = df["nota"].() dispersion = df["nota"].(ddof=1) print(promedio, mediana, dispersion)
Una correlación que un punto destruye
Calcula la correlación entre horas de estudio 2, 4, 6, 8 y 10 y notas 10, 11, 14, 15 y 18. Después añade el par (10, 8), un estudiante que estudió mucho y rindió mal, y v…
Evaluación · Estadística y análisis exploratorio
Diez clientes gastan 10, 10, 10, 10, 10, 10, 10, 10, 10 y 500 soles. ¿Qué medida describe mejor el gasto típico?
Evaluación · Estadística y análisis exploratorio
Una correlación de Pearson de −0.85 entre precio y unidades vendidas indica que…
Evaluación · Estadística y análisis exploratorio
df["monto"].std() devuelve 2.25 y numpy.std(df["monto"]) devuelve 2.11. ¿Por qué?
Separa características y etiqueta
Tienes cinco correos descritos por dos columnas —palabras sospechosas y remitente conocido— y una tercera que indica si es spam. Construye X e y con comprensiones de list…
Diseña las tres particiones
Simula 1000 clientes con X = [[i] for i in range(1000)]. Reserva el 20 % como test y, del resto, un 25 % como validación. Imprime cuántos quedan en cada conjunto y coment…
Completa la división
from sklearn.modelselection import traintestsplit Xtrain, Xtest, ytrain, ytest = traintestsplit( X, , testsize=, randomstate=42 ) print(len(Xtrain), len(Xtest))
Evaluación · Fundamentos de Machine Learning
En un problema supervisado, ¿qué representa y?
Evaluación · Fundamentos de Machine Learning
Reservas el 20 % de los datos como test. ¿Qué mides con ellos?
Evaluación · Fundamentos de Machine Learning
Tu modelo acierta el 99 % en entrenamiento y el 61 % en test. ¿Qué es lo más probable?
Evalúa una recta dada
Para los puntos (1, 3), (2, 4) y (3, 8), calcula las predicciones del modelo ŷ = 2x + 1, los residuos, el MSE y el MAE. Imprime los tres residuos y las dos métricas redon…
De la puntuación a la decisión
Escribe una función sigmoide(z) y clasifica con umbral 0.5 los valores z = -1, 0 y 3. Imprime la probabilidad redondeada a tres decimales y la decisión «aprueba» o «no ap…
Completa las métricas
errores = [yi - pi for yi, pi in zip(y, pred)] mse = sum(e 2 for e in errores) / mae = sum(abs(e) for e in errores) / len(errores) print("MSE:", round(, 2)) print("MAE:",…
Evaluación · Regresión lineal y logística
¿Qué eligen los mínimos cuadrados al ajustar una recta?
Evaluación · Regresión lineal y logística
Un modelo tiene MSE = 0.48 y MAE = 0.64. ¿Qué indica la diferencia?
Evaluación · Regresión lineal y logística
En una regresión logística con umbral 0.5, un caso recibe probabilidad 0.62. ¿Qué ocurre?
Compara dos divisiones
En el mismo nodo raíz de ocho estudiantes (cuatro y cuatro), calcula la ganancia de dividir por horas <= 3.5, que deja [0, 0, 0, 0, 1, 1] a la izquierda y [1, 1] a la der…
El precio de una pregunta
Entrena dos árboles, uno con maxdepth=1 y otro con maxdepth=3, sobre los ocho estudiantes. Imprime la exactitud de entrenamiento de cada uno redondeada a dos decimales y …
Completa la impureza
def gini(etiquetas): p = sum(etiquetas) / len(etiquetas) return 1 - (p 2 + ( - p) 2) nodo = [1, 1, 1, 0] print(round(gini(nodo), 3))
Evaluación · Árboles de decisión y Random Forest
Un nodo contiene 6 ejemplos de la clase 1 y 2 de la clase 0. ¿Cuál es su Gini?
Evaluación · Árboles de decisión y Random Forest
¿Qué hace el bagging en un Random Forest?
Evaluación · Árboles de decisión y Random Forest
Tu árbol acierta 1.0 en entrenamiento y 0.68 en validación. ¿Qué harías primero?
Asigna cuatro puntos
Con centroides en (1.5, 1.5) y (8.5, 8.5), asigna los puntos (1, 1), (2, 2), (8, 8) y (9, 9) calculando distancias. Imprime la etiqueta y la distancia al centroide elegid…
Calcula la inercia
Con los seis puntos de la lección y los centroides exactos (4/3, 4/3) y (19/3, 17/3), calcula la inercia sin usar scikit-learn: suma la distancia al cuadrado de cada punt…
Completa el clustering
from sklearn.cluster import KMeans modelo = KMeans(nclusters=, ninit=10, randomstate=0) modelo.fit(puntos) print("etiquetas:", ) print("inercia:", round(modelo.inertia, 2…
Evaluación · K-Means y aprendizaje no supervisado
¿Qué hace K-Means en el paso de actualización?
Evaluación · K-Means y aprendizaje no supervisado
La inercia baja de 68.33 a 2.67 al pasar de k = 1 a k = 2, y a 1.83 con k = 3. ¿Qué sugiere el codo?
Evaluación · K-Means y aprendizaje no supervisado
Agrupas ingresos (0 a 100 000) y edad (18 a 80) sin escalar. ¿Qué ocurre?
Leer una matriz ajena
Un modelo de fraude deja esta matriz sobre 1 000 transacciones: TN 870, FP 40, FN 60, TP 30. Calcula accuracy, precision, recall y F1, y responde qué porcentaje de fraude…
Completa la validación cruzada
from sklearn.modelselection import crossvalscore puntajes = crossvalscore(modelo, X, y, cv=, scoring=) print(puntajes.mean(), puntajes.std())
Pipeline sin fugas y decisión razonada
Con el conjunto de cáncer de mama, construye un Pipeline con StandardScaler y LogisticRegression, evalúalo con 5 pliegues usando F1 y AUC e imprime media y desviación. Ex…
Evaluación · Validación y evaluación de modelos
Un modelo predice «sano» para todos los pacientes de un conjunto donde solo el 5 % está enfermo. ¿Qué ocurre?
Evaluación · Validación y evaluación de modelos
Un filtro borra automáticamente los correos que clasifica como spam. ¿Qué error conviene vigilar primero?
Evaluación · Validación y evaluación de modelos
¿Cuál de estas prácticas produce fuga de datos?
Contar parámetros antes de entrenar
Construye con nn.Sequential una red Linear(3, 8) → ReLU → Linear(8, 1). Calcula a mano cuántos parámetros entrenables tiene y compruébalo con sum(p.numel() for p in model…
Completa el paso de entrenamiento
for xb, yb in cargador: optimizador.() perdida = criterio(modelo(xb), yb) perdida.() optimizador.()
Guardar el mejor modelo
Modifica el bucle del perceptrón multicapa para calcular también la pérdida de validación al final de cada época. Guarda el statedict solo cuando esa pérdida mejore e imp…
Evaluación · Redes neuronales con PyTorch
¿Qué hace exactamente loss.backward()?
Evaluación · Redes neuronales con PyTorch
¿Cuál es la forma de salida de nn.Linear(4, 5) aplicada a un lote de forma (3, 4)?
Evaluación · Redes neuronales con PyTorch
¿Por qué hay que llamar a optimizador.zerograd() en cada iteración?
Tokenizar y medir el desperdicio
Tokeniza estas tres frases con distilbert-base-uncased: «the cat sat», «machine learning is fun and useful» y «unbelievably». Imprime el número de ids de cada una (sin re…
Prepara un lote heterogéneo
lote = tok(frases, padding=, truncation=, maxlength=512, returntensors="pt") print(lote["inputids"].shape)
Similitud entre tres frases
Con sentence-transformers/all-MiniLM-L6-v2, codifica tres frases: dos sobre el mismo tema y una sobre otro. Normaliza los vectores y calcula la matriz de similitud coseno…
Evaluación · NLP, embeddings y Transformers
¿Por qué un tokenizador parte «transformers» en varios tokens?
Evaluación · NLP, embeddings y Transformers
En una matriz de atención, ¿qué significa que una fila sume 1?
Evaluación · NLP, embeddings y Transformers
¿Cuál es la diferencia central entre preentrenamiento y fine-tuning?
Endpoint de lote
Añade POST /predict/lote que reciba un objeto con una lista items de entre 1 y 50 departamentos y devuelva los precios en el mismo orden, junto con la versión del modelo.…
Comparar el modelo con una línea base
Antes de creer en un R2, compáralo con algo trivial. Usa DummyRegressor(strategy="mean") sobre el mismo Xtrain y calcula su MAE en el conjunto de prueba. Añade el resulta…
Completa el endpoint
@app.("/predict", responsemodel=Prediccion) def predecir(departamento: Departamento) -> Prediccion: if modelo is : raise HTTPException(statuscode=503, detail="El modelo n…
Evaluación · Proyecto: predicción y API con FastAPI
¿Por qué conviene serializar el Pipeline completo en lugar de solo el regresor?
Evaluación · Proyecto: predicción y API con FastAPI
Un cliente envía {"distrito":"Lince","aream2":-5,"habitaciones":1,"antiguedad":10}. ¿Qué ocurre?
Evaluación · Proyecto: predicción y API con FastAPI
¿Qué ventaja aporta handleunknown="ignore" en el OneHotEncoder?
Prueba de humo al arrancar
Escribe verificararranque(modelo): predice un caso conocido —85 m², 2 habitaciones, 12 años, Miraflores— y comprueba que el resultado cae entre 300 y 5000 USD. Si no, lan…
Informe de drift por columna
Amplía monitor/drift.py con informe(referencia, produccion, umbral): recorre las columnas numéricas, aplica la prueba y devuelve una lista de diccionarios. Añade el porce…
Completa el Dockerfile
FROM WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r COPY api ./api COPY models ./models EXPOSE 8000 CMD ["uvicorn", "api.main:app", "--host", "0.0…
Evaluación · Despliegue de modelos en producción
¿Dónde debe vivir la ruta del artefacto y la versión del modelo en producción?
Evaluación · Despliegue de modelos en producción
El contenedor arranca, pero curl desde tu máquina no conecta. El log dice Uvicorn running on http://127.0.0.1:8000. ¿Cuál es la causa?
Evaluación · Despliegue de modelos en producción
En la prueba de Kolmogorov-Smirnov, ¿qué indica un p-valor menor que el umbral?