📚 Centro de Aprendizaje
Aquí tienes todo lo que necesitas aprender para dominar Python y arrasar en la competición.
Python Básico
Input/output, variables, tipos. Lo esencial.
Strings
Textos, slicing, métodos. El 50% de problemas.
Listas
Arrays, bucles, comprensiones.
Diccionarios
Clave-valor, frecuencias, conteo.
Matemáticas
Primos, divisores, módulo.
Ordenación
sorted(), key, rankings.
Problemas Tipo
Patrones clásicos resueltos.
Para PROS
Mutables, referencias, lambda.
Interesante!
Por qué programar mola.
IA y Programación
Cómo usar la IA para aprender.
🐍 Python Básico
Esta sección cubre lo esencial para resolver los problemas de 1-4 puntos. Si dominas esto, puedes machacar la primera hora.
📥 Input: Leer datos
La función input() pausa el programa y espera que el usuario escriba algo.
Todo lo que escribe se devuelve como string (texto), aunque sean números.
→ Python Crash Course, Capítulo 7, pp. 114-116
Leer un valor
# Leer texto
nombre = input()
# Leer un número entero
edad = int(input())
# Leer un número decimal
precio = float(input())
int() cuando necesitas un número.
n = input() # n = "5" (texto)
n = int(input()) # n = 5 (número)
Leer varios valores en una línea
Cuando el problema dice: "La entrada contiene dos números separados por espacio"
# Entrada: "10 20"
a, b = map(int, input().split())
# a = 10, b = 20
# Entrada: "Ana 25 Madrid"
nombre, edad, ciudad = input().split()
edad = int(edad) # Convertir después
a, b = map(int, input().split())Esto aparece en el 80% de los problemas. Apréndelo de memoria.
Leer una lista de números
# Entrada: "1 2 3 4 5"
numeros = list(map(int, input().split()))
# numeros = [1, 2, 3, 4, 5]
Leer N líneas
# Primera línea dice cuántas líneas vienen
n = int(input())
for _ in range(n):
linea = input()
# procesar cada línea
📤 Output: Mostrar resultados
Las f-strings (format strings) permiten insertar variables directamente en el texto.
Se escriben con una f antes de las comillas y las variables van entre llaves {}.
→ Python Crash Course, Capítulo 2, pp. 20-21
Print básico
print("Hola mundo")
print(variable)
print("Texto", variable, "más texto")
f-strings (EL MÁS IMPORTANTE)
nombre = "Alex"
edad = 16
nota = 8.567
# Insertar variables
print(f"{nombre} tiene {edad} años")
# → Alex tiene 16 años
# Formatear decimales (CRÍTICO)
print(f"Nota: {nota:.2f}")
# → Nota: 8.57 (redondeado a 2 decimales)
# Sin decimales
print(f"Nota: {nota:.0f}")
# → Nota: 9
Si el problema pide "2 decimales" y tú imprimes más o menos → 0 puntos.
Siempre usa
:.2f cuando pida decimales.
🔢 Tipos de datos
Python tiene tipos básicos: int (enteros), float (decimales),
str (texto), bool (True/False). Python detecta el tipo automáticamente,
pero a veces necesitas convertir explícitamente.
→ Python Crash Course, Capítulo 2, pp. 26-28
| Tipo | Ejemplo | Convertir a |
|---|---|---|
int |
42, -7, 0 | int("42") |
float |
3.14, -0.5 | float("3.14") |
str |
"hola", '123' | str(42) |
bool |
True, False | bool(1) → True |
➕ Operadores matemáticos
a + b # Suma
a - b # Resta
a * b # Multiplicación
a / b # División (siempre float): 7/2 = 3.5
a // b # División entera: 7//2 = 3
a % b # Módulo (resto): 7%2 = 1
a ** b # Potencia: 2**3 = 8
El operador módulo (%) devuelve el resto de una división.
Es muy útil para saber si un número es par (n % 2 == 0) o
para trabajar con ciclos (horas, días de la semana).
→ Python Crash Course, Capítulo 7, pp. 116-117
Módulo: el operador secreto
# ¿Es par?
if n % 2 == 0:
print("Par")
# ¿Es divisible por 5?
if n % 5 == 0:
print("Divisible por 5")
# Último dígito de un número
ultimo = n % 10 # 1234 % 10 = 4
# Hora en formato 24h → 12h
hora_12 = hora % 12 # 15 % 12 = 3
🔀 Condicionales: if / elif / else
Las sentencias if permiten ejecutar código solo cuando se cumple una condición.
Usa elif para condiciones adicionales y else para "todo lo demás".
Python usa la indentación (espacios al inicio) para saber qué código va dentro del if.
→ Python Crash Course, Capítulo 5, pp. 78-82
edad = int(input())
if edad < 18:
print("Menor de edad")
elif edad < 65:
print("Adulto")
else:
print("Jubilado")
Operadores de comparación
a == b # Igual
a != b # Distinto
a < b # Menor
a > b # Mayor
a <= b # Menor o igual
a >= b # Mayor o igual
Combinar condiciones
# AND: ambas deben ser verdad
if edad >= 18 and edad < 65:
print("Adulto activo")
# OR: al menos una debe ser verdad
if dia == "sabado" or dia == "domingo":
print("Fin de semana")
# NOT: niega la condición
if not encontrado:
print("No existe")
🔁 Bucle for
El bucle for recorre cada elemento de una lista (o cualquier secuencia) uno por uno.
La variable del bucle toma el valor de cada elemento en cada iteración.
→ Python Crash Course, Capítulo 4, pp. 49-52
# Recorrer un rango de números
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# Rango con inicio y fin
for i in range(1, 6):
print(i) # 1, 2, 3, 4, 5
# Rango con paso
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
# Recorrer una lista
frutas = ["manzana", "pera", "naranja"]
for fruta in frutas:
print(fruta)
enumerate: índice + valor
nombres = ["Ana", "Luis", "Eva"]
for i, nombre in enumerate(nombres):
print(f"{i}: {nombre}")
# 0: Ana
# 1: Luis
# 2: Eva
🔁 Bucle while
El bucle while repite el código mientras una condición sea verdadera.
Es útil cuando no sabes cuántas veces necesitas repetir (a diferencia de for).
→ Python Crash Course, Capítulo 7, pp. 117-122
# Contar hasta que llegue a 5
contador = 0
while contador < 5:
print(contador)
contador += 1
# Leer hasta encontrar "fin"
while True:
linea = input()
if linea == "fin":
break
print(f"Leí: {linea}")
✅ Ejercicio de práctica
Entrada ejemplo:
3
Ana 17
Luis 22
Eva 19
Salida esperada:
Luis
Eva
👁️ Ver solución
n = int(input())
for _ in range(n):
partes = input().split()
nombre = partes[0]
edad = int(partes[1])
if edad >= 18:
print(nombre)