📚 Centro de Aprendizaje

Aquí tienes todo lo que necesitas aprender para dominar Python y arrasar en la competición.


🐍 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

📖 Del libro

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())
⚠️
Error clásico: Olvidar 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
💡
Patrón memorizable:
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

📖 Del libro

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
🛑
EL ERROR #1 EN CODEWARS: Formato de decimales incorrecto.
Si el problema pide "2 decimales" y tú imprimes más o menos → 0 puntos.
Siempre usa :.2f cuando pida decimales.

🔢 Tipos de datos

📖 Del libro

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
📖 Del libro

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

📖 Del libro

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

📖 Del libro

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

📖 Del libro

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

📝
Problema: Lee un número N y luego N líneas con nombre y edad. Imprime solo los nombres de los mayores de edad.

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)