Plan de recuperación, día a día
Toda la teoría explicada desde cero, como si nunca hubieras abierto Excel ni escrito una línea de Python, y un banco de más de 100 ejercicios repartidos en bloques de 40 minutos al día. El examen fue un entregable: a partir de un fichero de datos hay que producir un Excel resuelto con fórmulas, formato condicional, gráficos, tablas dinámicas y subtotales. Pero el temario también incluye Python (puede caer escribir código o preguntas tipo test), así que no cerramos ninguna puerta: preparamos las dos mitades por igual. Las soluciones van en un archivo aparte: primero lo intentas, luego te corriges.
Cómo usar este plan (bloques de 40 minutos)
Cada día tiene una lectura de teoría corta y varios ejercicios. Está pensado para un bloque de 40 minutos diarios. Reparte así cada sesión:
- Leer el bloque de teoría del día (10 min). Está todo explicado y con ejemplos resueltos; si algo no entra, se relee antes de seguir.
- Hacer los ejercicios del día (20 min). En Excel, replícalos en una hoja real; en Python, escríbelos en un cuaderno Jupyter o en VS Code y ejecútalos. No vale "leer" el ejercicio: hay que teclearlo.
- Corregir con el archivo de soluciones (10 min). Lo importante no es acertar, es ver dónde se rompió el razonamiento y por qué.
Los días marcados con ⭐ (referencias, SI/Y/O, funciones con criterio, importar+subtotales, control de flujo, POO y los simulacros) son los que más caen y los que más cuesta hacer bajo presión. Llevan teoría extendida.
📅 Calendario completo (15 jun → 3 jul)
18 días de estudio + el examen. La primera mitad construye Excel de cero hasta poder entregar la práctica; la segunda mitad ataca Python desde el entorno hasta la POO; los últimos días son simulacros completos y repaso de fallos.
| Día | Tema | Teoría | Ejercicios |
|---|---|---|---|
| Fase 1 · Excel desde cero (UD1–UD3) | |||
| Lun 15 jun | El entorno de Excel: celdas, rangos, tipos de datos, errores | Teoría E1 | E1, E2, E3 |
| Mar 16 jun | ⭐ Referencias: relativas, absolutas y mixtas (la base de todo) | Teoría E2 | E4, E5, E6 |
| Mié 17 jun | Funciones básicas: SUMA, PROMEDIO, MAX, MIN, CONTAR | Teoría E3 | E7, E8, E9 |
| Jue 18 jun | ⭐ Funciones lógicas: SI, Y, O y anidamientos | Teoría E4 | E10, E11, E12, E13 |
| Vie 19 jun | Texto y fecha: IZQUIERDA, DERECHA, EXTRAE, CONCATENAR, AÑO, MES, HOY | Teoría E5 | E14, E15, E16, E17 |
| Sáb 20 jun | ⭐ Funciones con criterio: SUMAR.SI, CONTAR.SI, PROMEDIO.SI · VAR, RAIZ, POTENCIA · minigráficos | Teoría E6 | E18, E19, E20, E21 |
| Dom 21 jun | ⭐ Importar datos, formato condicional, ordenar y subtotales | Teoría E7 | E22, E23, E24, E25 |
| Lun 22 jun | Gráficos (en hoja nueva) y tablas dinámicas | Teoría E8 | E26, E27, E28, E29, E30 |
| Mar 23 jun | ⭐ SIMULACRO Excel 1 · entregable completo "carnicería" (tipo examen) | Simulacro XL-1 | Entregable |
| Mié 24 jun | Repaso Excel + base de datos con BUSCARV (Feedback 1) | Teoría E9 | E31–E45 |
| Fase 2 · Python desde cero (UD4–UD6 + notebooks) | |||
| Jue 25 jun | Entorno, Python como calculadora, variables y tipos de datos | Teoría P1 | P1–P8 |
| Vie 26 jun | Operadores, conversión de tipos e importar librerías (math) | Teoría P2 | P9–P14 |
| Sáb 27 jun | Listas: índices, slicing y métodos | Teoría P3 | P15–P34 (20 listas) |
| Dom 28 jun | Strings (cadenas): índices, slicing y métodos | Teoría P4 | P35–P41 |
| Lun 29 jun | Diccionarios, tuplas y conjuntos (sets) | Teoría P5 | P42–P62 |
| Mar 30 jun | ⭐ Control de flujo: if/elif/else, for, while, range, break/continue | Teoría P6 | P63–P70 |
| Mié 1 jul | ⭐ Funciones, comprensiones y POO (clases, herencia) + problemas anidados | Teoría P7 | P71–P95 (control flujo) |
| Fase 3 · Simulacros y repaso final | |||
| Jue 2 jul | ⭐ SIMULACRO Python + SIMULACRO mixto (Excel + Python + test) + repaso de fallos | Simulacros | SIM-PY, SIM-MIX |
| Vie 3 jul | DÍA DE EXAMEN · checklist y repaso ligero (nada nuevo) | Checklist | — |
Si un día no puedes, arrastra los ejercicios al siguiente y comprime un fin de semana. La constancia importa más que la perfección. Los días de simulacro dan para más de 40 min: si hace falta, parte el simulacro en dos tardes.
🟢 Guía maestra de Excel (el entregable)
El examen es una práctica entregable: abres un fichero Datos.xlsx donde solo las celdas sombreadas son datos; en el resto tú escribes las fórmulas. Al terminar configuras las hojas como el modelo y lo envías. Estas son las reglas y las "recetas" que sirven siempre.
Las 8 reglas de oro de una fórmula
- Toda fórmula empieza por
=. Si no, Excel lo trata como texto. - Los argumentos se separan por punto y coma
;(configuración española). Un rango se escribe con dos puntos:B2:B30. - El texto literal va entre comillas dobles:
="Correcto". Los números, sin comillas. - Referencia relativa
B5: al copiar/arrastrar, cambia. Absoluta$B$5: nunca cambia. Mixta$B5(fija columna) oB$5(fija fila). La tecla F4 va rotando entre las cuatro formas. - Para referirte a otra hoja:
=Datos!B4(o con apóstrofos si el nombre lleva espacios:='Mi Hoja'!B4). - No des formato a los números dentro de la fórmula (nada de €, ni separadores de miles). El formato se aplica aparte, con el formato de celda.
- Evita dividir por cero (da
#¡DIV/0!) y comprueba que los paréntesis abren y cierran igual. - Prioridad de operadores: 1º paréntesis
(), 2º exponente/porcentaje^ %, 3º multiplicar/dividir* /, 4º sumar/restar+ -.
Catálogo de funciones que SÍ entran (con sintaxis exacta)
Todas las del entregable. Apréndete qué hace cada una y qué argumentos pide; los ejemplos usan ;.
| Función | Sintaxis | Qué hace |
|---|---|---|
| SUMA | =SUMA(B3:B9) | Suma todos los valores del rango. |
| PROMEDIO | =PROMEDIO(B3:B9) | Media aritmética del rango. |
| MAX / MIN | =MAX(B3:B9) | Valor más alto / más bajo del rango. |
| CONTAR | =CONTAR(B3:B9) | Cuántas celdas del rango contienen un número. |
| SI | =SI(prueba; valor_si_verdadero; valor_si_falso) | Devuelve un valor u otro según se cumpla la condición. |
| Y | =Y(cond1; cond2; …) | VERDADERO solo si se cumplen todas. |
| O | =O(cond1; cond2; …) | VERDADERO si se cumple al menos una. |
| SUMAR.SI | =SUMAR.SI(rango_criterio; criterio; rango_suma) | Suma las celdas de rango_suma cuyo equivalente en rango_criterio cumple el criterio. |
| CONTAR.SI | =CONTAR.SI(rango; criterio) | Cuenta cuántas celdas cumplen el criterio. |
| PROMEDIO.SI | =PROMEDIO.SI(rango_criterio; criterio; rango_promedio) | Media de las celdas que cumplen el criterio. |
| IZQUIERDA / DERECHA | =IZQUIERDA(texto; n) | Los n primeros / últimos caracteres del texto. |
| EXTRAE | =EXTRAE(texto; inicio; n) | n caracteres a partir de la posición inicio. |
| CONCATENAR / & | =CONCATENAR(t1; t2; …) o =A1&" "&B1 | Une textos. El operador & hace lo mismo y es más rápido. |
| AÑO / MES / DIA | =AÑO(fecha) | Extrae el año / mes / día de una fecha. |
| HOY | =HOY() | La fecha actual (sin argumentos). |
| VAR.S / VAR.P | =VAR.S(B3:B9) | Varianza de muestra / de población. |
| RAIZ | =RAIZ(B3) | Raíz cuadrada. |
| POTENCIA | =POTENCIA(B3; 3) o =B3^3 | Eleva un número a una potencia (aquí, al cubo). |
| BUSCARV | =BUSCARV(valor; tabla; nº_columna; FALSO) | Busca valor en la 1ª columna de tabla y devuelve el dato de la columna nº indicada. FALSO = coincidencia exacta. |
##### columna estrecha · #¡DIV/0! división por cero · #N/A valor no encontrado (típico de BUSCARV) · #¿NOMBRE? nombre de función mal escrito · #¡REF! referencia a una celda que ya no existe · #¡VALOR! tipos incompatibles (texto donde va número) · #¡NUM! número no válido · #¡NULO! intersección de rangos que no se cruzan.Receta del entregable, paso a paso (la que aplicarás en el examen)
- Abre
Datos.xlsxy guárdalo con tu NP (Archivo → Guardar como). Identifica las celdas sombreadas: ésas son datos, NO se tocan. - Columna a columna, escribe la fórmula en la primera celda libre y arrástrala hacia abajo. Antes de arrastrar, decide qué referencias deben quedar fijas (precios, constantes →
$) y cuáles deben moverse. - Para las columnas lógicas usa SI (y dentro Y/O si hay varias condiciones). Para texto condicional, combina SI con EXTRAE/DERECHA y
&. - Añade las filas/columnas de resumen: SUMA, PROMEDIO, MAX, MIN, VAR.S, y los condicionales SUMAR.SI, CONTAR.SI, PROMEDIO.SI.
- Inserta minigráficos (Insertar → Minigráficos → Línea/Columna) sobre los rangos que pida.
- Aplica formato condicional (Inicio → Formato condicional): reglas por valor, por texto o barra de datos.
- Importa el fichero de texto (Datos → Obtener datos → Desde texto/CSV), indicando el delimitador correcto (tabulador o punto y coma) y la celda de inicio.
- Ordena por la columna que pidan y aplica Subtotales (Datos → Esquema → Subtotal). Recuerda: hay que ordenar ANTES de poner subtotales.
- Crea el gráfico; si piden "en hoja nueva", muévelo con clic derecho → Mover gráfico → Hoja nueva.
- Configura la página de cada hoja como el modelo (orientación, márgenes, encabezado con tu Nombre/NP, pie con el nombre de la hoja, color de pestaña). Guarda y envía.
$. El dato de la fila que estoy calculando → SÍ cambia → sin $. Esa única pregunta resuelve el 90% de los fallos del entregable.🟡 Guía maestra de Python
Python lee el código de arriba abajo y usa la indentación (sangría) para saber qué instrucciones van dentro de un bloque. Los comentarios empiezan por #. Para imprimir en pantalla se usa print(...) y para pedir datos al usuario input(...) (que siempre devuelve texto: hay que convertirlo con int() o float() si quieres operar).
Los 4 tipos básicos y la conversión
| Tipo | Qué es | Ejemplo |
|---|---|---|
int | Entero (sin decimales) | edad = 25 |
float | Decimal | altura = 1.75 |
str | Cadena de texto (entre comillas) | nombre = "Ana" |
bool | Booleano: True o False | aprobado = True |
type(x) te dice el tipo. Conversión: int("25") → 25 · float("3.14") → 3.14 · str(99) → "99". Cuidado: "5" + 1 da error (texto + número); hay que convertir primero.
Las 5 colecciones: cómo se distinguen
| Colección | Símbolo | ¿Ordenada? | ¿Mutable? | Notas |
|---|---|---|---|---|
| Lista | [ ] | Sí (por índice) | Sí | Admite duplicados y tipos mixtos. |
| Tupla | ( ) | Sí (por índice) | No | Como una lista pero no se puede cambiar. |
| Diccionario | {clave: valor} | Por clave | Sí | Claves únicas; acceso por clave. |
| Set (conjunto) | { } | No | Sí | Elementos únicos, sin duplicados. |
| String | " " | Sí (por índice) | No | Secuencia de caracteres. |
Índices (en lista/tupla/string): empiezan en 0. x[0] es el primero, x[-1] el último. Slicing x[1:4] = del índice 1 al 3 (el final no se incluye); x[::2] = de dos en dos.
Métodos esenciales por colección (memoriza estos)
| Estructura | Métodos / operaciones |
|---|---|
| Listas | append(x) añade al final · insert(i,x) en posición · extend(otra) concatena · remove(x) borra 1ª aparición · pop()/pop(i) saca y devuelve · index(x) posición · count(x) nº de apariciones · sort() / sort(reverse=True) · reverse() · copy() · clear() · sum(lista) · len(lista) · x in lista |
| Strings | upper() / lower() · strip() quita espacios · replace(a,b) · split(sep) → lista · " ".join(lista) → string · len(s) · concatenar con + · repetir con * |
| Diccionarios | d[clave] acceso · d[clave]=v añadir/modificar · get(clave, defecto) sin error · pop(clave) · keys() · values() · items() (para recorrer) · clave in d |
| Tuplas | count(x) · index(x) · len(t) · list(t) para convertirla a lista · concatenar con + · x in t (no tiene append/remove: es inmutable) |
| Sets | add(x) · remove(x) / discard(x) · union(otro) · intersection(otro) · difference(otro) · update(iter) · clear() · x in s |
Control de flujo: las 3 estructuras que lo resuelven todo
# 1) CONDICIONAL — decidir
if nota >= 90:
print("Excelente")
elif nota >= 50:
print("Aprobado")
else:
print("Suspenso")
# 2) BUCLE for — repetir sobre una colección o un rango
for fruta in ["manzana", "pera"]:
print(fruta)
for i in range(1, 6): # 1,2,3,4,5 (el 6 NO se incluye)
print(i)
# 3) BUCLE while — repetir mientras se cumpla una condición
contador = 1
while contador <= 5:
print(contador)
contador += 1 # ¡no olvides actualizar, o bucle infinito!range: range(5) → 0,1,2,3,4 · range(2,7) → 2..6 · range(0,11,2) → pares · range(10,0,-1) → cuenta atrás. break rompe el bucle; continue salta a la siguiente vuelta.
total = 0, pares = [], contador = 0) y dentro del bucle la vas alimentando (total += n, pares.append(n), contador += 1). Si dominas este patrón, los 25 problemas de control de flujo salen casi solos.Funciones, comprensiones y POO (lo de UD5–UD6)
# FUNCIÓN: empaqueta código reutilizable
def suma(a, b):
return a + b
print(suma(3, 4)) # 7
# COMPRENSIÓN DE LISTA: crear una lista en una línea
cuadrados = [x**2 for x in range(1, 6)] # [1,4,9,16,25]
pares = [x for x in range(1, 11) if x % 2 == 0] # con filtro
# CLASE (POO): plantilla con atributos y métodos
class Perro:
def __init__(self, nombre, edad): # constructor
self.nombre = nombre
self.edad = edad
def ladrar(self):
print(f"{self.nombre} dice guau")
mi_perro = Perro("Toby", 3)
mi_perro.ladrar()
# HERENCIA: una clase que parte de otra
class Cachorro(Perro):
def __init__(self, nombre, edad, raza):
super().__init__(nombre, edad) # reutiliza el constructor de Perro
self.raza = raza__init__ es el constructor (se ejecuta al crear el objeto), self es "este objeto concreto", los atributos son sus datos y los métodos son lo que sabe hacer. La herencia permite que "Alumno" parta de "Registro" sin reescribir lo común.📖 Teoría completa · Excel
Todo el bloque de Excel (UD1–UD3) desde cero. Cada apartado corresponde a uno o varios días del calendario.
Teoría E1 · El entorno de Excel: celdas, rangos, tipos de datos y errores
Un archivo de Excel se llama libro y se guarda con extensión .xlsx (una plantilla, con .xltx). Cada libro tiene una o varias hojas de cálculo (las pestañas de abajo). Una hoja es una cuadrícula de filas (numeradas 1, 2, 3…) y columnas (con letras A, B, C… hasta XFD). El cruce de una fila y una columna es una celda, y se nombra por su columna y su fila: B5 es la celda de la columna B, fila 5.
- Celda activa: la que tienes seleccionada. Su nombre aparece arriba a la izquierda (cuadro de nombres) y su contenido en la barra de fórmulas.
- Rango: un conjunto rectangular de celdas, escrito
esquina_superior_izquierda:esquina_inferior_derecha. Ej.:B2:E9son todas las celdas desde B2 hasta E9. - Una hoja tiene 1.048.576 filas y 16.384 columnas (dato típico de test).
La cinta de opciones (los menús de arriba)
Excel agrupa todo en pestañas: Archivo (nuevo, abrir, guardar, imprimir), Inicio (formato, copiar/pegar, formato condicional, ordenar y filtrar), Insertar (tablas, gráficos, minigráficos), Disposición de página (márgenes, orientación, encabezados), Fórmulas (catálogo de funciones por categorías), Datos (importar, ordenar, filtrar, subtotales), Revisar (proteger hoja) y Vista.
Los 3 tipos de datos de una celda
- Texto: letras y símbolos. Se alinea solo a la izquierda.
- Números (incluye fechas, porcentajes y monedas): se alinean solos a la derecha.
- Fórmulas: empiezan por
=y devuelven un resultado calculado.
Atajos y operaciones básicas
Copiar Ctrl+C, cortar Ctrl+X, pegar Ctrl+V, guardar Ctrl+G (o Ctrl+S), ayuda F1. Supr borra solo el contenido (no el formato ni la celda). Para seleccionar celdas sueltas, mantén Ctrl mientras haces clic. Para insertar/eliminar filas o columnas, clic derecho en la cabecera.
Los 8 errores de Excel (caen en test)
| Error | Causa |
|---|---|
##### | La columna es demasiado estrecha para mostrar el número (o fecha negativa). Se arregla ensanchando. |
#¡DIV/0! | Has dividido entre cero o entre una celda vacía. |
#N/A | Un valor no está disponible (típico cuando BUSCARV no encuentra lo buscado). |
#¿NOMBRE? | Has escrito mal el nombre de una función o un nombre de rango que no existe. |
#¡VALOR! | Mezclas tipos incompatibles (texto donde se espera un número). |
#¡REF! | La fórmula apunta a una celda que ha sido eliminada. |
#¡NUM! | Un valor numérico no es válido (p. ej. raíz de un negativo). |
#¡NULO! | Intersección de dos rangos que no se cruzan. |
Teoría E2 · ⭐ Referencias: relativas, absolutas y mixtas
Éste es el concepto más importante de todo Excel y el que más puntos da (o quita) en el entregable. Una referencia es la forma de nombrar una celda dentro de una fórmula. Lo decisivo es qué pasa cuando arrastras o copias la fórmula a otra celda.
| Tipo | Se escribe | Al copiar/arrastrar… |
|---|---|---|
| Relativa | B5 | cambian fila y columna (se adapta). Es la opción por defecto. |
| Absoluta | $B$5 | NO cambia nada: siempre apunta a B5. |
| Mixta (columna fija) | $B5 | la columna B se queda; la fila cambia. |
| Mixta (fila fija) | B$5 | la fila 5 se queda; la columna cambia. |
El símbolo $ significa "ancla": lo que tiene un $ delante no se mueve. La tecla F4, con el cursor sobre una referencia, va rotando: B5 → $B$5 → B$5 → $B5 → vuelve a B5.
Ejemplo resuelto: precio fijo en una celda
Tienes el precio unitario en B1 = 25 y las cantidades en A4, A5, A6…. Quieres el importe = cantidad × precio en la columna C.
En C4 escribes: =A4*$B$1 · A4 es relativa → al arrastrar a C5 se vuelve A5 (¡bien, cada fila su cantidad!) · $B$1 es absoluta → al arrastrar SIGUE siendo $B$1 (¡bien, el precio no cambia!) Arrastras C4 hacia abajo y obtienes: C4 =A4*$B$1 C5 =A5*$B$1 C6 =A6*$B$1
$ en la constante. Si escribes =A4*B1 y arrastras, B1 se convierte en B2, B3… (que están vacías) y todo da 0 o error. Antes de arrastrar, mira tu fórmula y pregúntate: "¿qué celda debe quedarse quieta?" → ponle $.Para referirte a una celda de otra hoja: =Datos!B4 multiplica por lo que haya en B4 de la hoja "Datos". Si el nombre de la hoja tiene espacios, va entre apóstrofos: ='Hoja Cálculo'!B4.
Teoría E3 · Funciones básicas: SUMA, PROMEDIO, MAX, MIN, CONTAR
Una función es una fórmula con nombre que ya viene hecha. Estructura: =NOMBRE(argumentos). Las cinco básicas:
=SUMA(B2:B10) → suma todos los valores del rango =PROMEDIO(B2:B10) → media aritmética =MAX(B2:B10) → el valor más grande =MIN(B2:B10) → el valor más pequeño =CONTAR(B2:B10) → cuántas celdas tienen un NÚMERO
Puedes mezclar rangos y celdas sueltas: =SUMA(B2:B10; D2; F5). El botón Autosuma (Σ) de la pestaña Inicio inserta automáticamente =SUMA(...) del rango de arriba.
CONTAR cuenta solo números; CONTARA (con A) cuenta celdas no vacías (incluido texto). En el entregable se usa CONTAR sobre columnas numéricas.Teoría E4 · ⭐ Funciones lógicas: SI, Y, O
Sirven para tomar decisiones: "si pasa esto, pon aquello; si no, pon esto otro". Es lo más evaluado del entregable (columnas como Descuento, Eficiencia, Tipo de Cliente, COND, PRUEBA, GAP).
La función SI
=SI(prueba_lógica; valor_si_VERDADERO; valor_si_FALSO)
Ejemplo: marcar "Aprobado" si la nota de A2 llega a 50, y "Suspenso" si no:
=SI(A2>=50; "Aprobado"; "Suspenso")
Recuerda: el texto va entre comillas; los números, sin comillas. Operadores de comparación: = igual, > mayor, < menor, >= mayor o igual, <= menor o igual, <> distinto.
Las funciones Y / O (varias condiciones a la vez)
=Y(...) es VERDADERO solo si se cumplen todas. =O(...) es VERDADERO si se cumple al menos una. Casi nunca van solas: se meten dentro de un SI.
Eficiencia: VERDADERO si Volumen(B2)>70 Y Empleados(C2)>500 =Y(B2>70; C2>500) Tipo de cliente: "MAYORISTA" si Total>2000 O Empleados>500; si no "Minorista" =SI(O(D2>2000; C2>500); "MAYORISTA"; "Minorista") Descuento: si Empleados>450 aplica 10% sobre el total; si no, texto "Mantener coste" =SI(C2>450; D2*10%; "Mantener coste")
=SI(O(...); "MAYORISTA"; "Minorista") se lee: «SI (se cumple O de las condiciones) entonces MAYORISTA, si no Minorista». El O(...) es solo la prueba; primero resuélvela mentalmente (¿verdadero o falso?) y luego elige la rama.SI anidado (más de dos resultados)
Si hay tres o más casos, se mete un SI dentro de otro:
Calificar: >=90 "Sobresaliente", >=50 "Aprobado", resto "Suspenso" =SI(A2>=90; "Sobresaliente"; SI(A2>=50; "Aprobado"; "Suspenso"))
Teoría E5 · Funciones de texto y de fecha
Texto: cortar y unir cadenas
=IZQUIERDA(B2; 3) → los 3 primeros caracteres de B2 =DERECHA(B2; 2) → los 2 últimos caracteres de B2 =EXTRAE(B2; 3; 4) → 4 caracteres a partir de la posición 3 =CONCATENAR(B2; " "; C2) → une B2, un espacio y C2 =B2 & " trabaja en " & D2 → lo mismo con el operador &
Ejemplo del modelo del examen: a partir del nombre (B2), apellido (C2) y empresa (D2), construir la frase "Lee Kun-hee trabaja en la empresa Samsung Electronics":
=CONCATENAR(B2; " "; C2; " trabaja en la empresa "; D2) o bien: =B2 & " " & C2 & " trabaja en la empresa " & D2
Y el caso "PRUEBA" del entregable de la carnicería: si no se cumple la condición, escribir "la segunda letra del mes, -*-, y las dos letras a la derecha del mes" (ej. para "Agosto" → "g-*-to"):
=EXTRAE(mes;2;1) & "-*-" & DERECHA(mes;2)
EXTRAE("Agosto";2;1) = "g"
DERECHA("Agosto";2) = "to"
resultado: "g-*-to"Fecha
=HOY() → la fecha de hoy (sin argumentos) =AÑO(B2) → el año de la fecha de B2 (ej. 2015) =MES(B2) → el número de mes (1–12) =DIA(B2) → el día del mes
Caso "GAP": para junio, agosto o diciembre escribe el beneficio %; en el resto, el número del mes de hoy:
=SI(O(MES(fecha)=6; MES(fecha)=8; MES(fecha)=12); beneficio_pct; MES(HOY()))
Teoría E6 · ⭐ Funciones con criterio, estadísticas y minigráficos
Las funciones "…SI" (suman/cuentan/promedian solo lo que cumple algo)
=SUMAR.SI(rango_criterio; criterio; rango_suma) =CONTAR.SI(rango; criterio) =PROMEDIO.SI(rango_criterio; criterio; rango_promedio)
La clave es entender los dos rangos de SUMAR.SI y PROMEDIO.SI: el primero es dónde miras la condición, el último es de dónde sacas el número. Ejemplos del entregable:
# Sumar el Volumen Total (col D) solo de los MAYORISTA (col E) =SUMAR.SI(E2:E20; "MAYORISTA"; D2:D20) # Contar cuántas celdas del rango COND son VERDADERO =CONTAR.SI(K2:K25; VERDADERO) # Promedio de Vegetal (E) de los meses con beneficio < 1500 (col F) =PROMEDIO.SI(F2:F25; "<1500"; E2:E25)
">100", "<1500", "<>0". Un texto exacto también: "MAYORISTA". Un número o un valor lógico pueden ir sin comillas.Estadísticas y matemáticas
=VAR.S(C2:C25) → varianza de muestra =RAIZ(C2) → raíz cuadrada =POTENCIA(C2; 3) → C2 al cubo (igual que =C2^3 )
Minigráficos (sparklines)
Son gráficos diminutos dentro de una sola celda. Insertar → grupo Minigráficos → elige Línea, Columna o Pérdidas y ganancias, selecciona el rango de datos y la celda de destino. En el entregable se piden sobre columnas como Ternera/Pollo/Vegetal o Volumen/Empleados.
↑ calendarioTeoría E7 · ⭐ Importar datos, formato condicional, ordenar y subtotales
Importar un fichero de texto
El entregable da un .txt que hay que meter en una hoja. Ruta: Datos → Obtener datos → Desde texto/CSV (o "Desde un archivo"). Lo crucial es indicar bien el delimitador, es decir, qué carácter separa las columnas:
FicheroImportar (1).txt(empleados) → separado por punto y coma.Ficheroimportar.txt(empresas externas) → separado por tabulador.
Excel muestra una vista previa; eliges el delimitador, confirmas que detecta los encabezados, y Cargar en la celda/hoja que pidan (a veces "a partir de B2").
Formato condicional
Da color a las celdas según una regla, sin cambiar su valor. Inicio → Formato condicional:
- Resaltar reglas de celdas: Mayor que, Entre, Igual a, Texto que contiene… → eliges color de relleno y de fuente.
- Barras de datos: dibuja una barra proporcional al valor dentro de la celda (se pide barra naranja sobre "Volumen Total").
- Reglas por texto: "Pendiente" → rojo, "Cumplido" → verde, "En trámite" → naranja.
Ordenar y Subtotales
Ordenar: Datos → Ordenar, eligiendo columna y sentido (A-Z o Z-A). Subtotales (Datos → Esquema → Subtotal) inserta filas de resumen automáticas por grupos: eliges "Para cada cambio en" (la columna que agrupa), "Usar función" (Suma, Promedio, Máximo…) y "Agregar subtotal a" (las columnas a calcular).
Teoría E8 · Gráficos y tablas dinámicas
Gráficos
Seleccionas los datos → Insertar → eliges tipo (columnas, barras, líneas, circular, combinado…). Tras crearlo aparecen las pestañas Diseño de gráfico y Formato para títulos, colores y etiquetas.
Tipos que se piden: columnas agrupadas 3D (solo con los datos de un año), y gráfico combinado (una serie en columnas y otra superpuesta). Las circulares no admiten valores negativos ni cero.
Tablas dinámicas
Resumen y analizan grandes tablas arrastrando campos, sin fórmulas. Seleccionas los datos → Insertar → Tabla dinámica → en una hoja nueva aparece el panel "Campos" con 4 áreas:
| Área | Para qué |
|---|---|
| Filas | el campo que quieres como filas (p. ej. Región). |
| Columnas | el campo que quieres como columnas (p. ej. Producto). |
| Valores | el número a totalizar (Ventas). Por defecto SUMA; puedes cambiar a Promedio, Recuento… |
| Filtros | un campo para filtrar toda la tabla (p. ej. solo el 1er trimestre). |
Para cambiar de Suma a Promedio: clic en el campo de Valores → Configuración de campo de valor → eliges la operación. La Segmentación de datos (Analizar → Insertar Segmentación) añade botones de filtro visuales. Un gráfico dinámico es un gráfico ligado a la tabla, con desplegables de filtro.
↑ calendarioTeoría E9 · Base de datos en Excel con BUSCARV (Feedback 1)
El ejercicio de Feedback 1 monta una pequeña base de datos de autoescuela con varias hojas (Alumnos, Profesores, Clases, Facturas…) relacionadas entre sí por un campo común (el Nº de registro). La función estrella para relacionar hojas es BUSCARV.
=BUSCARV(valor_buscado; tabla; nº_columna; FALSO) · valor_buscado: lo que buscas (p. ej. el Nº de registro) · tabla: el rango donde buscar (la 1ª columna es por donde busca) · nº_columna: qué columna de esa tabla devolver (contando desde 1) · FALSO: coincidencia EXACTA (casi siempre FALSO)
Ejemplo: en la hoja Clases tienes el DNI del alumno y quieres traer su nombre desde la hoja Alumnos (donde la columna 1 es el DNI y la columna 2 el nombre):
=BUSCARV(A2; Alumnos!$A$2:$D$100; 2; FALSO)
Si no encuentra el valor, devuelve #N/A. Conceptos asociados del ejercicio: validación de datos y listas desplegables (Datos → Validación de datos) para evitar errores de tecleo, y el cálculo de una factura: Base imponible, IVA (21%), Total con IVA, restar anticipos y obtener el saldo pendiente.
📖 Teoría completa · Python
Todo el bloque de Python (UD4–UD6 y los notebooks) desde cero. No hace falta saber programar: empezamos por lo más básico.
Teoría P1 · Entorno, Python como calculadora, variables y tipos
Python es un lenguaje de programación interpretado y de alto nivel (creado por Guido van Rossum, 1991). "Interpretado" significa que el ordenador lee y ejecuta tu código línea por línea, sin un paso previo de compilación. Se escribe en editores como VS Code o en cuadernos Jupyter (celdas que mezclan texto y código y se ejecutan con Shift+Enter).
Python como calculadora
print(2 + 3) # 5 suma print(10 - 4) # 6 resta print(3 * 7) # 21 multiplicación print(15 / 3) # 5.0 división (¡siempre da decimal!) print(2 ** 3) # 8 potencia print(10 % 3) # 1 módulo (el RESTO de dividir) print(10 // 3) # 3 división entera (sin decimales)
print(...) muestra cosas en pantalla. El # inicia un comentario (Python lo ignora; sirve para anotar).
Variables
Una variable es un nombre que guarda un valor. Se crea con = (asignación). No hace falta declarar el tipo: Python lo deduce solo.
nombre = "Juan" # texto (str) edad = 25 # entero (int) altura = 1.75 # decimal (float) es_alumno = True # booleano (bool) print(nombre, edad) # Juan 25
Reglas: Python distingue mayúsculas (edad y Edad son distintas) y se usa _ para separar palabras (num_clases). Para ver el tipo de algo: type(edad) → <class 'int'>.
Asignación múltiple
a, b, c = 100, 200, 300 # a=100, b=200, c=300 x = y = z = 0 # las tres valen 0
Teoría P2 · Operadores, conversión de tipos e importar librerías
Operadores
| Tipo | Operadores |
|---|---|
| Aritméticos | + - * / // (división entera) % (módulo) ** (potencia) |
| Comparación | == igual != distinto > < >= <= (devuelven True/False) |
| Lógicos | and (y) or (o) not (no) |
| Asignación | = += -= *= /= x += 2 es x = x + 2 |
= ASIGNA (guarda un valor en una variable), == COMPARA (pregunta si dos cosas son iguales). Confundirlos es el error más típico al empezar.Conversión de tipos
edad = "25" # esto es TEXTO, no número
edad_num = int(edad) # ahora sí es el entero 25
pi = 3.14
pi_txt = str(pi) # "3.14" como texto
n = float("19.5") # 19.5 como decimal
# input() SIEMPRE devuelve texto: hay que convertir para operar
edad = int(input("¿Tu edad? "))Importar librerías
Python trae módulos extra con funciones ya hechas. Se cargan con import:
import math print(math.pi) # 3.14159... print(math.sqrt(16)) # 4.0 from math import sin, pi # importar solo lo que necesitas import math as m # con alias: m.cos(0)
Otras operaciones numéricas útiles: round(b, 3) redondea a 3 decimales, math.floor(b) redondea hacia abajo, math.ceil(b) hacia arriba, abs(b) valor absoluto.
Teoría P3 · Listas
Una lista es una colección ordenada y mutable (se puede cambiar) de elementos, escrita entre corchetes [ ]. Admite tipos mezclados y duplicados.
numeros = [5, 10, 15, 20, 25] mixta = [10, "Hola", True, 3.14]
Índices y slicing
numeros[0] # 5 (el primero: el índice empieza en 0) numeros[-1] # 25 (el último) numeros[1:4] # [10, 15, 20] (del 1 al 3; el 4 NO entra) numeros[:3] # [5, 10, 15] (desde el principio) numeros[2:] # [15, 20, 25] (hasta el final) numeros[::2] # [5, 15, 25] (de dos en dos)
Modificar
numeros[2] = 35 # cambia el tercer elemento numeros[1:3] = [25, 35] # cambia un rango
Métodos (lo que una lista sabe hacer)
| Método | Qué hace |
|---|---|
append(x) | añade x al final |
insert(i, x) | inserta x en la posición i |
extend(otra) | añade todos los elementos de otra lista (concatena) |
remove(x) | elimina la primera aparición de x |
pop() / pop(i) | saca y devuelve el último (o el de índice i) |
index(x) | devuelve la posición de x |
count(x) | cuántas veces aparece x |
sort() | ordena (ascendente; sort(reverse=True) descendente) |
reverse() | invierte el orden |
copy() | hace una copia |
clear() | vacía la lista |
Y dos funciones que se usan con listas (no son métodos): len(lista) (cuántos elementos) y sum(lista) (suma). Para saber si algo está: 50 in numeros → True/False. Para pasar texto a lista de caracteres: list("Hola") → ['H','o','l','a'].
Teoría P4 · Strings (cadenas de texto)
Un string es una secuencia de caracteres entre comillas (simples, dobles o triples para varias líneas). Es inmutable: no puedes cambiar una letra suelta, pero sí crear uno nuevo.
s = "Hola, Mundo!" s + " adiós" # concatenar con + s * 3 # repetir tres veces s[0] # 'H' (índice desde 0) s[-1] # '!' (último) s[0:4] # 'Hola' (slicing, el 4 no entra) len(s) # 12 (longitud)
Métodos de string
| Método | Qué hace |
|---|---|
upper() / lower() | a mayúsculas / minúsculas |
strip() | quita los espacios del principio y del final |
replace(a, b) | cambia todas las apariciones de a por b |
split(sep) | parte el texto en una lista usando el separador |
"sep".join(lista) | al revés: une una lista de textos en un solo string |
"Me gusta Java".replace("Java", "Python") # "Me gusta Python"
"Hola como estas".split(" ") # ['Hola','como','estas']
" ".join(["Python","es","genial"]) # "Python es genial"f-strings (la forma moderna de meter variables en un texto): pones una f antes de las comillas y las variables entre llaves: f"Hola {nombre}, tienes {edad}".
Teoría P5 · Diccionarios, tuplas y sets
Diccionarios
Colección de pares clave: valor, entre llaves { }. Las claves son únicas; accedes por la clave (no por posición). Es mutable.
persona = {"nombre": "Ana", "edad": 30, "ciudad": "Sevilla"}
persona["nombre"] # 'Ana'
persona["edad"] = 31 # modificar
persona["profesion"] = "Ingeniera" # añadir
persona.get("direccion", "No disponible") # sin error si no existe
persona.pop("ciudad") # elimina y devuelve
persona.keys() # todas las claves
persona.values() # todos los valores
persona.items() # pares (para recorrer con for)Tuplas
Como una lista pero entre paréntesis ( ) e inmutable (no se puede modificar tras crearla). Útil para datos que no deben cambiar.
dias = ("Lunes", "Martes", "Miércoles")
dias[1] # 'Martes'
dias.count(2) # nº de apariciones
dias.index("Lunes") # posición
len(dias)
list(dias) # convertir a lista si necesitas modificarSets (conjuntos)
Colección desordenada de elementos únicos (sin duplicados), entre llaves { }. Ideal para eliminar repetidos y operar como en teoría de conjuntos.
s = {1, 2, 3, 4}
s.add(5) # añadir
s.remove(2) # eliminar
{1,2,3}.union({3,4}) # {1,2,3,4}
{1,2,3}.intersection({2,3,4}) # {2,3}
{1,2,3}.difference({2,3}) # {1}
4 in s # True/FalseTeoría P6 · ⭐ Control de flujo: condicionales y bucles
Hasta ahora el código iba en línea recta. El control de flujo permite decidir (condicionales) y repetir (bucles). En Python, lo que va "dentro" de un if o un bucle se marca con indentación (4 espacios). Eso es obligatorio: la sangría ES la sintaxis.
Condicionales: if / elif / else
edad = int(input("Edad: "))
if edad < 18:
print("Menor de edad")
elif 18 <= edad < 65:
print("Adulto")
else:
print("Senior")Bucle for (recorre una colección o un rango)
for fruta in ["manzana", "banana", "cereza"]:
print(fruta)
for i in range(1, 6): # 1,2,3,4,5
print(i)Bucle while (repite mientras se cumpla la condición)
contador = 1
while contador <= 5:
print(contador)
contador += 1 # ¡imprescindible! si no, bucle infinitorange, break y continue
range(5) # 0,1,2,3,4
range(2, 7) # 2,3,4,5,6
range(0, 11, 2) # pares 0..10
range(10, 0, -1) # cuenta atrás 10..1
for n in range(1, 10):
if n == 5:
break # corta el bucle del todo
if n == 3:
continue # salta SOLO esta vuelta
print(n)Bucles anidados (matrices)
Una matriz es una lista de listas. Para recorrerla, un bucle dentro de otro:
matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for fila in matriz:
for elemento in fila:
print(elemento)Suma →
total = 0 … total += n. Filtrar →
pares = [] … if n%2==0: pares.append(n). Contar →
c = 0 … if cond: c += 1. Máximo sin
max() → mayor = lista[0] … if n > mayor: mayor = n.Teoría P7 · ⭐ Funciones, comprensiones y POO
Funciones
Una función empaqueta un trozo de código con nombre para reutilizarlo. Se define con def y devuelve un resultado con return.
def suma(a, b):
return a + b
resultado = suma(3, 4) # 7
# Parámetros con valor por defecto
def saludar(nombre="amigo"):
print(f"Hola, {nombre}")
saludar() # Hola, amigo
saludar("Ana") # Hola, AnaComprensiones (crear listas/diccionarios en una línea)
cuadrados = [x**2 for x in range(1, 6)] # [1,4,9,16,25]
pares = [x for x in range(1, 11) if x % 2 == 0] # con filtro
cuad_dict = {x: x**2 for x in range(1, 6)} # {1:1, 2:4, ...}Funciones avanzadas que pueden caer: lambda (función anónima de una línea: cuadrado = lambda x: x**2), map (map(lambda x: x*2, lista)) y filter (filter(lambda x: x>0, lista)).
Programación Orientada a Objetos (POO)
class Contacto:
def __init__(self, nombre, telefono): # constructor
self.nombre = nombre # atributos
self.telefono = telefono
def mostrar(self): # método
print(f"{self.nombre}: {self.telefono}")
c = Contacto("Ana", "600123123")
c.mostrar()
# HERENCIA: Alumno parte de Registro
class Registro:
def __init__(self, nombre):
self.nombre = nombre
class Alumno(Registro):
def __init__(self, nombre, curso):
super().__init__(nombre) # reutiliza el constructor del padre
self.curso = cursoConceptos POO que pueden preguntarse: clase (plantilla) vs objeto (instancia), __init__ (constructor), self (el objeto actual), herencia (una clase parte de otra), encapsulación (atributos privados con __), polimorfismo (mismo método, comportamiento distinto según la clase).
Extras de UD6 (test): excepciones, ficheros
# Manejo de errores
try:
n = int(input("Número: "))
print(10 / n)
except ValueError:
print("Eso no es un número")
except ZeroDivisionError:
print("No se puede dividir por cero")
# Leer/escribir ficheros
with open("datos.txt", "r") as f: # 'r' leer, 'w' escribir, 'a' añadir
contenido = f.read()✍️ Banco de ejercicios
45 ejercicios de Excel + 95 de Python = 140 ejercicios, más los simulacros. Hazlos de verdad (en una hoja de Excel y en un cuaderno de Python), no de cabeza. Las soluciones, con el razonamiento completo, están en el archivo aparte Soluciones_Plan_Recuperacion_Informatica.html. Un dataset de Excel que se reutiliza varias veces:
DATASET "VENTAS" (lo usaremos en varios ejercicios) Fila 1 = cabeceras. Volumen Unitario fijo en la celda G1 = 25 A B C D E 1 Empresa Volumen Empleados VolTotal Tipo 2 Space X 80 520 3 Google 60 300 4 Tesla 120 700 5 Pfizer 45 480 6 Iberia 95 510
🟢 Excel
Entorno y referencias (Teoría E1–E2)
Iberia, (b) 2025, (c) =SUMA(B2:B6), (d) 15/03/2018, (e) 30%.#¡DIV/0!, #¿NOMBRE?, #N/A, #####, #¡REF!. Causas: (1) columna estrecha, (2) BUSCARV no encuentra el valor, (3) borraste una celda referenciada, (4) escribiste mal el nombre de la función, (5) dividiste entre una celda vacía.B2:D6? (b) Escribe el rango que abarca de la celda A1 a la celda C10. (c) ¿Qué significa =Datos!A1?B1 = 21% y precios sin IVA en A4, A5, A6. Escribe en C4 la fórmula del precio con IVA (precio + precio×IVA) lista para arrastrar hacia abajo. Indica qué referencias llevan $ y por qué.C4 escribes =A4*$B$1 y la arrastras hasta C6, ¿qué fórmula queda en C5 y en C6? Si en cambio escribieras =A4*B1 (sin $), ¿qué pasaría y por qué daría mal?B1:K1) y en la columna A (A2:A11), y cada celda interior es el producto. Escribe la fórmula de B2 con referencias mixtas para poder arrastrarla a toda la tabla. (Pista: hay que fijar la fila de arriba y la columna de la izquierda.)Funciones básicas (Teoría E3)
G1 = 25. Escribe la fórmula de D2 lista para arrastrar hasta D6.=CONTAR(A2:A6) y =CONTARA(A2:A6) aplicada a la columna Empresa (texto) y a la columna Volumen (números). ¿Qué devuelve cada una?Funciones lógicas (Teoría E4)
"Grande" si los Empleados (C) superan 500, y "Pequeña" si no. Escríbela para F2 lista para arrastrar."MAYORISTA" si el VolTotal (D) supera 2000 o los Empleados (C) superan 500; si no, "Minorista". Escribe la fórmula de E2."Mantener coste". Y aparte, un SI anidado que clasifique el Volumen (B) en "Alto" (≥100), "Medio" (≥60) o "Bajo" (resto).Texto y fecha (Teoría E5)
B2 = "Samsung": (a) los 3 primeros caracteres, (b) los 2 últimos, (c) 3 caracteres a partir del 2º. Escribe las tres fórmulas y di qué devuelven.Lee), apellido en C2 (Kun-hee) y empresa en D2 (Samsung Electronics). Escribe la fórmula (con CONCATENAR y también con &) que produzca: Lee Kun-hee trabaja en la empresa Samsung Electronics."Agosto"). Construye con EXTRAE, DERECHA y & la cadena "segunda letra del mes + -*- + las dos letras de la derecha" → para Agosto debe dar g-*-to. Para Octubre, c-*-re.2015-10-20). (a) Extrae el año en una columna nueva. (b) Escribe una fórmula que devuelva el beneficio% (celda K2) si el mes de B2 es junio, agosto o diciembre, y si no, el número de mes de la fecha de hoy.Funciones con criterio y estadísticas (Teoría E6)
"MAYORISTA".Importar, formato condicional, ordenar, subtotales (Teoría E7)
FicheroImportar (1).txt (separado por punto y coma, con encabezados) a partir de la celda B2 de una hoja. ¿Qué cambiarías si el fichero estuviera separado por tabulador?Gráficos y tablas dinámicas (Teoría E8)
Repaso Excel · variantes y casos (Teoría E1–E9)
D7 contiene los gastos fijos mensuales. Escribe la fórmula de "Beneficio neto" = Beneficio (col F) − gastos fijos, lista para arrastrar por todas las filas. ¿Qué referencia se ancla?Ventas_Enero al rango B2:B5. (a) ¿Cómo se asigna un nombre a un rango? (b) ¿A qué tipo de referencia equivale usar un nombre, relativa o absoluta? (c) Escribe una SUMA usando el nombre.=2+3*4, (b) =(2+3)*4, (c) =2^3+1, (d) =10/2-3.=SUMAR.SI(E2:E6, MAYORISTA, D2:D6) y le da #¿NOMBRE?. (a) ¿Cuál es el error? (b) Reescríbela correctamente. (c) Otra fórmula da #¡VALOR! al sumar una columna que parece numérica: ¿qué sospechas?🟡 Python
Estos ejercicios son los reales del curso (de los notebooks). Escríbelos y ejecútalos en Jupyter o VS Code; no vale leerlos.
Calculadora y variables (Teoría P1)
25 + 18.6 por 9.29 entre 5 (operador módulo).4 a la potencia de 5.nombre, edad y ciudad. Asígnales valores e imprime una frase que los combine (p. ej. "Me llamo Juan, tengo 25 años y vivo en Madrid").type() para imprimir el tipo de cada una.123 a cadena de texto. Convierte el texto "45.67" a número flotante e imprime el resultado.\n y un tabulador con \t.Operadores y conversión (Teoría P2)
58 / 5, 58 // 5 y 58 % 5. Explica con tus palabras la diferencia entre los tres.var_1 = "Módulo 1 de Python ", conviértela toda a mayúsculas y luego toda a minúsculas.var_1 y calcula la división de ese número entre 7, redondeada a 4 decimales.12 - 4 * 2 - 2 + 2 para que el resultado final sea cero (0).12 - 4 * 2 - 2 + 2 para que el resultado final sea catorce (14).Listas (Teoría P3)
mis_numeros que contenga 5, 10, 15, 20, 25.mis_numeros y guárdalo en tercer_elemento.mis_numeros para que sea 12.mis_numeros con el método apropiado.mis_numeros.mis_numeros.otros_numeros = [35, 40, 45] y concaténala con mis_numeros usando el método adecuado.mis_numeros.numeros_repetidos = [1, 2, 3, 2, 1, 2] y cuenta cuántas veces aparece el 2.mis_numeros en orden ascendente.mis_numeros.mi_lista_mixta con: 10, "Hola", True, 3.14, [1, 2, 3].mis_numeros.mis_numeros por 100 y 200.nueva_lista.mis_numeros en una nueva lista copia_numeros.valores = [10, 20, 30, 40] y calcula la suma de sus elementos con el método/función adecuado."Hola Mundo" en una lista de caracteres.mis_numeros con el método correcto.esta_presente que compruebe si el número 50 está en mis_numeros.Strings (Teoría P4)
saludo = "Hola" y nombre = "Juan" y concaténalos para formar "Hola, Juan!".palabra = "Python" y repítela 3 veces para formar "PythonPythonPython".fruta = "manzana", accede al primer y al último carácter.texto = "buenos días" y conviértelo a mayúsculas.frase = "Me gusta Java", reemplaza "Java" por "Python".oracion = "Hola, cómo estás?" y divídelo en palabras con split().palabras = ["Python", "es", "genial"], únelas en un solo string separado por espacios.Diccionarios (Teoría P5)
mi_diccionario con claves 'nombre', 'edad', 'ciudad' y valores 'Ana', 30, 'Sevilla'.'nombre' y guárdalo en nombre.'edad' a 31.'profesión' con valor 'Ingeniera'.get() para acceder a la clave 'direccion' y que devuelva 'No disponible' si no existe.'ciudad' con el método pop().Tuplas (Teoría P5)
mi_tupla con los números 1, 2, 3, 4, 5.mi_tupla y guárdalo en segundo_elemento.tupla2 = (6, 7, 8) y concaténala con mi_tupla en tupla_concatenada.mi_tupla_repetida = (1, 2, 2, 3, 2, 4) y cuenta cuántas veces aparece el 2.mi_tupla.mi_tupla en una lista llamada mi_lista_convertida.mi_tupla y almacena el resultado en existe_5.Sets (Teoría P5)
mi_set con los números 1, 2, 3, 4.mi_set.mi_set con remove().otro_set = {3, 4, 5} y haz la unión de mi_set y otro_set.mi_set y otro_set.mi_set y almacénalo en esta_presente.mi_set con el método adecuado.Control de flujo · básico (Teoría P6)
for para imprimir cada una.while para imprimir los números del 1 al 10.for que imprima del 1 al 10 pero que se detenga si el número es 7 y que salte el número 4.range() para imprimir los números pares entre 0 y 20 (incluyendo el 20).range() para contar desde 10 hasta 1 e imprime los números.Control de flujo · problemas (Teoría P6–P7)
numeros con los números del 1 al 20 y usa un for para filtrar solo los pares en una nueva lista pares.for para calcular el precio total de todos.for para encontrar el mayor. No uses max().for todas las de longitud mayor a 4 y guárdalas en una lista nueva.for e if.for anidados para sumar todos los elementos.for anidados y un condicional para contar cuántas vocales hay en total.for anidados para crear una tabla de multiplicar del 1 al 5, almacenando cada resultado en una matriz (lista de listas).for anidados y un condicional para contar cuántos números de una lista de listas son mayores a 10.for anidados y un condicional para sumar solo los números pares de una lista de listas.for anidados la matriz transpuesta (intercambiar filas y columnas).palindromas.for anidados para encontrar el valor máximo en todas las sublistas. No uses max() directamente.primos.🧪 Simulacros (tipo examen)
Estos son más elaborados: reproducen el formato real del entregable. Hazlos cronometrados, en un Excel y un cuaderno de Python de verdad. Las soluciones completas, en el archivo aparte.
🟢 Simulacro XL-1 · Entregable "Carnicería" (el más parecido al examen)
Reproduce el Ejercicio de Feedback 2. Datos de partida (hoja DATOS): precios → Ternera 2,13 € (B4), Pollo 1,89 € (C4), Vegetal 0,93 € (D4); Gastos fijos/mes 328,20 € (D7). En la hoja CÁLCULO hay 24 filas (meses de 2017 y 2018), con columnas de unidades vendidas de Ternera (C), Pollo (D) y Vegetal (E). Solo las celdas sombreadas son datos; el resto lo calculas tú con las referencias correctas.
Hoja CÁLCULO — calcula cada columna
- BENEFICIO = Ternera×precio_ternera + Pollo×precio_pollo + Vegetal×precio_vegetal (referencias absolutas a la hoja DATOS).
- BENEFICIO NETO = Beneficio − gastos fijos/mes (D7 de DATOS, anclado).
- BENEFICIO % = Beneficio neto / Beneficio (formato porcentaje).
- PRUEBA: si Beneficio > 1600 escribe el Beneficio; si no, "2ª letra del mes + -*- + 2 letras de la derecha del mes" (ej. "g-*-to").
- GAP: para junio, agosto o diciembre escribe el Beneficio %; si no, el número de mes de la fecha de hoy.
- COND: VERDADERO si Ternera>300 Y Pollo<500 Y Vegetal>200; FALSO si no.
- MINIGRÁFICOS con Ternera, Pollo y Vegetal.
- SUMA, MÁXIMO, MÍNIMO, PROMEDIO, VARIANZA del rango Ternera (C2:C25).
- RAIZ de la celda a su izquierda y x³ (el cubo de esa raíz).
- CONTAR de celdas con número en GAP (J2:J25); CONTAR.SI de VERDADERO en COND (K2:K25).
- SUMAR.SI: suma de GAP de los meses con COND FALSO. PROMEDIO.SI: promedio de Vegetal de los meses con Beneficio < 1500 €.
Hoja GRÁFICO
Gráfico de columnas agrupadas 3D en hoja nueva (no como objeto), solo con los datos de 2017 (series Ternera/Pollo/Vegetal por mes), título "2017".
Hoja EXTERNOS
Importa Ficheroimportar.txt (separado por tabulador, con encabezados) a partir de B2. Aplica formato condicional en Estado (Pendiente→rojo+blanco, Cumplido→verde, En trámite→naranja). Ordena por Empresa y aplica Subtotal con el promedio de Región por Empresa.
Configuración
Márgenes 1 (encabezado/pie 0,5), encabezado con Nombre/Apellido/NP, pie con el nombre de cada hoja, color de pestañas. Guarda como tu NP y envía.
🟢 Simulacro XL-2 · Entregable "Ventas / Empleados" (examen oficial)
Reproduce el examen oficial. Abre Datos.xlsx, guárdalo con tu NP. Solo las celdas sombreadas son datos.
Hoja VENTAS (pestaña roja)
- Volumen Total = Volumen × Volumen Unitario (el Volumen Unitario, 25, está fijo en una celda → referencia absoluta).
- Descuento: si Empleados > 450, 10% sobre el Volumen Total; si no, "Mantener coste".
- Eficiencia: VERDADERO si Volumen > 70 Y Empleados > 500.
- Tipo de Cliente: "MAYORISTA" si Volumen Total > 2000 O Empleados > 500; si no "Minorista".
- Para Volumen, Empleados y Volumen Total: minigráficos y Suma, Promedio, Máximo.
- SUMAR.SI: suma del Volumen Total de todos los MAYORISTA.
- Formato condicional: en Volumen y Empleados, verde para valores entre 70 y 150 y amarillo/naranja para >150; en Volumen Total, barra de datos naranja.
Hoja Gráfico (pestaña verde)
Gráfico combinado en hoja nueva que se parezca al modelo (Empleados en columnas + Volumen Total), título "Datos Empresa".
Hoja EMPLEADOS (pestaña azul)
- Importa
FicheroImportar (1).txt(separado por punto y coma, con encabezados). - Columna Año que extraiga el año de la fecha de creación.
- Última columna: texto tipo "Lee Kun-hee trabaja en la empresa Samsung Electronics" (con CONCATENAR o
&). - Subtotales por TipoEmpresa con el máximo de "Años Empresa" y de "Año".
🟡 Simulacro PY · Python (código + test)
Parte A · Escribe el código
- Pide un número por teclado y di si es par o impar (usa
%). - Dada
notas = [4, 7, 9, 3, 6, 8], calcula con un bucle (sinsum()nimax()): la suma, la media y la nota máxima. - Cuenta cuántas vocales tiene la palabra que introduzca el usuario (función que devuelve el total).
- Crea una clase
Productocon atributosnombreyprecioy un métodocon_iva()que devuelva el precio × 1,21. Crea un objeto y muéstralo. - Dada
precios = {"pan": 1.2, "leche": 0.9, "aceite": 5.0}, recorre el diccionario e imprime solo los productos de más de 1 €, y al final el total. - Con una comprensión de lista, crea la lista de los múltiplos de 3 entre 1 y 30.
Parte B · Test (elige la correcta)
- ¿Qué imprime
print(7 // 2)? a) 3.5 b) 3 c) 1 d) 3,5 - ¿Cuál es inmutable? a) lista b) diccionario c) tupla d) set
"Hola".upper()devuelve… a) "hola" b) "HOLA" c) error d) "Hola"range(2, 10, 2)genera… a) 2,4,6,8 b) 2,4,6,8,10 c) 2..10 d) 0,2,4,6,8- El método que añade un elemento al final de una lista es… a)
add()b)append()c)insert()d)push() - En POO,
__init__es… a) un bucle b) el constructor c) un atributo privado d) una librería - ¿Qué colección elimina automáticamente los duplicados? a) lista b) tupla c) set d) string
int("12") + 3da… a) "123" b) 15 c) error d) "12 3"
🔵 Simulacro MIX · mezcla rápida (test de repaso, 15 preguntas)
- (Excel) ¿Qué referencia NO cambia al arrastrar:
B5,$B$5oB$5? - (Excel) Escribe la fórmula que sume D2:D20 solo de las filas donde E2:E20 sea "MAYORISTA".
- (Excel) ¿Qué significa el error
#N/Ay con qué función suele salir? - (Excel) ¿Qué hay que hacer SIEMPRE antes de aplicar Subtotales?
- (Excel) ¿En qué área de la tabla dinámica pones el campo que quieres totalizar?
- (Excel)
=SI(O(A2>100; B2>5); "Sí"; "No"): si A2=80 y B2=7, ¿qué devuelve? - (Excel) ¿Cómo se hace que un gráfico ocupe una hoja entera y no flote sobre los datos?
- (Excel) ¿Qué delimitador usa
FicheroImportar (1).txty cuálFicheroimportar.txt? - (Python) ¿Qué imprime
print(10 % 3)? - (Python) Diferencia entre
=y==. - (Python) ¿Qué hace
continuedentro de un bucle? - (Python) ¿Cómo se accede al último elemento de una lista
x? - (Python) Escribe una comprensión de lista con los pares del 1 al 10.
- (Python) ¿Qué método de diccionario evita el error si la clave no existe?
- (Python) En
class Alumno(Registro):, ¿qué relación hay entre Alumno y Registro?
✅ Checklist del día de examen (3 jul)
Nada nuevo hoy. Repaso ligero de estas chuletas mentales:
- Referencias: ¿esta celda debe quedarse quieta al arrastrar? → ponle
$. Constantes y precios → absolutas. - SI:
=SI(prueba; si_verdadero; si_falso). Texto entre comillas. Varias condiciones →Y(...)/O(...)dentro. - …SI: SUMAR.SI/PROMEDIO.SI tienen dos rangos (dónde miro / de dónde saco). Criterio con operador entre comillas:
">100". - Subtotales: ORDENAR primero, luego Datos → Subtotal. Gráfico "en hoja nueva" = clic derecho → Mover gráfico.
- Importar: Datos → Desde texto → elegir delimitador correcto (punto y coma o tabulador).
- Configurar página: márgenes, encabezado (Nombre/NP), pie (nombre de hoja), color de pestaña, guardar como NP. "Es parte del trabajo saber guardar y enviar la práctica."
- Python — patrón acumulador: variable vacía antes del bucle, aliméntala dentro (
total=0; total+=n). - Python — índices desde 0,
x[-1]último, slicingx[1:4]no incluye el 4.range(a,b)no incluye b. - Python — tipos:
input()devuelve texto → convierte conint()/float(). Inmutables: tupla y string. - POO: clase = plano, objeto = instancia,
__init__constructor,selfel objeto, herencia consuper().
Lee despacio cada apartado, subraya el dato gatillo (constante a fijar, condición, delimitador, rango), y aplica la receta. Cuidado con los textos entre comillas y con ordenar antes de los subtotales. ¡Suerte! 🍀