Referencias de Python
Los fragmentos a los que recurrirás en cada lección. El código corre en las celdas de arriba; estos son los patrones para copiar.
-
Variables
-
Asignar y leer
x = 5 x = x + 1 # 6 print(x) # 6= guarda un valor bajo un nombre. Reasignar solo apunta el nombre al nuevo valor.
-
Reglas de nombres
score = 10 # snake_case ✅ age_2 = 3 # digits ok after first char age 2 = 3 # ❌ space & leading digit Score = 10 # works, but remember: case-sensitiveLos nombres distinguen mayúsculas de minúsculas. Usa snake_case, nombres descriptivos y evita palabras propias como print.
-
Intercambiar y desempaquetar
a, b = 1, 2 a, b = b, a # swap in one line first, *rest = [1, 2, 3] # first=1, rest=[2, 3]Python asigna varios nombres a la vez, el intercambio más limpio que existe.
-
-
Salida
-
print
print('Hello, world!') print(2 + 3) # 5, values print automaticallyLa única función que usarás en todas las lecciones.
-
Sin coma final
print('a', 'b', sep='-') # a-bsep controla el separador; el valor por defecto es un espacio.
-
-
Entrada
-
Leer el mensaje
name = input('Your name: ') print('Hi', name)input() se detiene y espera; SIEMPRE devuelve una cadena.
-
Convertirlo
age = int(input('Age: ')) price = float(input('Price: '))Convierte al leer con int()/float(), o fallará cada paso de matemáticas posterior.
-
-
Números
-
Aritmética básica
x = 7 x // 2 # 3 integer division x % 2 # 1 remainder x ** 2 # 49 exponent// y % son los complementos de la división: responden "cuántas veces" y "cuánto queda".
-
type()
type(3) # <class 'int'> type(3.0) # <class 'float'> type("3") # <class 'str'>Comprueba el tipo de cualquier valor cuando un error mencione un desajuste de tipos.
-
Convertir
int('42') # 42 float('4.2') str(42) # '42'input() siempre devuelve una cadena: conviértela antes de hacer matemáticas.
-
-
Cadenas
-
f-strings
name = 'PyDA' print(f'{name} → {len(name)} letters')La f antes de la comilla hace que {…} inserte valores. Úsalas, no la concatenación.
-
Métodos
' hi '.strip() # 'hi' 'hello'.upper() # 'HELLO' 'a,b'.split(',') # ['a', 'b']Los métodos devuelven una cadena NUEVA: las cadenas son inmutables.
-
Rebanar
word = 'python' word[0] # 'p' word[-1] # 'n' word[1:4] # 'yth'El inicio es inclusivo, el final exclusivo. Los índices negativos cuentan desde el final.
-
Combinar, repetir, buscar
'py' + 'thon' # 'python' 'ha' * 3 # 'hahaha' 'py' in 'python' # True len('abc') # 3+ une cadenas, * las repite, in comprueba una subcadena y len() cuenta caracteres.
-
Escape con barra invertida
print('she\'s fine') # she's fine print('line1\nline2') # two lines print('tab\there') # tab here\' es una comilla, \n una línea nueva y \t una tabulación. Usa cadenas crudas r"…" cuando una ruta tenga demasiadas barras.
-
-
Listas
-
Crear y añadir
nums = [1, 2, 3] nums.append(4) # [1, 2, 3, 4] nums + [5] # [1, 2, 3, 4, 5]append modifica la lista en su sitio; + crea una nueva.
-
Leer
nums[0] # 1 len(nums) # 4 nums[-1] # 4 3 in nums # Truein / not in son las comprobaciones de pertenencia.
-
Recorrer
for n in nums: print(n * 2)El bucle for alcanza cada elemento uno a la vez.
-
Ordenar y copiar
nums.sort() # in place sorted(nums) # NEW sorted list copy = nums[:] # real copy, not the same listsort() cambia la lista y devuelve None; sorted() devuelve una nueva. Usa nums[:] para trabajar sobre una copia.
-
Trucos con rebanadas
nums = [0, 1, 2, 3, 4] nums[1:] # [1, 2, 3, 4] drop the head nums[:-1] # [0, 1, 2, 3] drop the tail nums[::-1] # [4, 3, 2, 1, 0] reversedLa forma [inicio:fin:paso] es cirugía de listas: eliminar, copiar e invertir en una línea.
-
-
Tuplas y Conjuntos
-
Tuplas
t = (1, 2, 3) t[0] # 1 x, y = t # unpack # t[0] = 9 # ❌ tuples can't changeUna lista fija: úsala cuando la forma no deba cambiar: coordenadas, pares de configuración, datos de solo lectura.
-
Conjuntos
s = {1, 2, 2, 3} # {1, 2, 3} — duplicates dropped s.add(4) 4 in s # True s.remove(4)Una bolsa sin orden de elementos únicos: perfecto para eliminar duplicados y comprobaciones de pertenencia rápidas.
-
Operaciones de conjuntos
a = {1, 2, 3} b = {3, 4} a | b # {1, 2, 3, 4} union a & b # {3} intersection a - b # {1, 2} difference a ^ b # {1, 2, 4} symmetric|, &, -, ^ convierten los conjuntos en matemáticas de una línea: compara grupos sin bucles anidados.
-
¿Qué contenedor?
list # ordered, editable, keeps order tuple # ordered, read-only set # unordered, unique, fast in dict # key → value lookupElige según lo que necesite el código: orden, unicidad o encontrar cosas por nombre.
-
-
Diccionarios
-
Crear y leer
ages = {'ada': 36, 'bob': 41} ages['ada'] # 36 ages.get('zoe') # None (safe "missing") ages.get('zoe', 0) # 0 (with default)Usar [clave] con una clave inexistente lanza KeyError: prefiere .get() cuando dudes.
-
Escribir
ages['ada'] = 37 ages['zoe'] = 22 del ages['bob']Asignar añade o actualiza; del elimina una clave.
-
Iterar
for k, v in ages.items(): print(k, v).items() da pares (clave, valor); .keys() y .values() dan solo un lado.
-
-
Condicionales
-
if / elif / else
if score >= 90: print("A") elif score >= 80: print("B") else: print("C")elif se detiene en cuanto una condición es True: el orden importa.
-
Comparaciones
== != < <= > >=== comprueba igualdad; = asigna. Recordarlo arregla la mayoría de errores de "por qué es True".
-
Operadores booleanos
a and b # both truthy a or b # at least one a and not band / or / not: las palabras simples, no && ni ! como en otros lenguajes.
-
Veracidad
if x: # 'is x non-empty?' print(x) # Falsy: 0, 0.0, '', [], {}, None # Everything else is truthy"if x:" es la comprobación idiomática de "¿está x?"; los contenedores vacíos y el 0 fallan, todo lo demás pasa.
-
Ternario en una línea
'pass' if score >= 50 else 'fail'Un if/else compacto que devuelve un valor: estupendo dentro de f-strings y print().
-
-
Bucles
-
range
for i in range(3): # 0, 1, 2 print(i) for i in range(1, 4): # 1, 2, 3 print(i)range se detiene antes del segundo número: la misma regla de extremo exclusivo que las rebanadas.
-
enumerate / zip
for i, item in enumerate(['a','b']): print(i, item) for x, y in zip([1,2],[3,4]): print(x, y)enumerate añade un contador; zip empareja dos secuencias elemento a elemento.
-
break / continue
for n in range(10): if n == 3: break # stop the loop for n in range(10): if n % 2: continue # skip this one print(n)break abandona el bucle por completo; continue salta a la siguiente iteración.
-
while
n = 3 while n > 0: print(n) n -= 1 # don't forget: while needs progresswhile se repite hasta que su condición sea False: un bucle que nunca actualiza su condición nunca termina.
-
else del bucle (opcional)
for n in nums: if n == target: break else: print("not found")El bloque else solo se ejecuta si el bucle terminó sin break: un indicador integrado de "¿se encontró?".
-
-
Funciones
-
Definir y llamar
def double(x): return x * 2 y = double(21) # 42El cuerpo de def… debe estar indentado. return entrega un valor; sin él obtienes None.
-
Valores por defecto y palabras clave
def greet(name, exclaim=True): s = f"Hello {name}" return s + ("!" if exclaim else "") greet("ada") # Hello ada! greet("ada", False) # Hello adaLos parámetros con = reciben valores por defecto; quien llama puede pasarlos por palabra clave.
-
Devolver varios valores
def minmax(nums): return min(nums), max(nums) lo, hi = minmax([3, 1, 4]) # lo=1, hi=4Una función puede devolver una tupla y quien la llama la desempaqueta en varios nombres a la vez.
-
Ámbito y print vs return
x = 10 # global def show(y): x = 5 # local — different x! print(x, y) # side effect, returns None result = show(1) # result is Noneprint muestra un valor en la consola; return realmente lo entrega. Asignar dentro de una función eclipsa la global.
-
Lambda (formas cortas)
double = lambda x: x * 2 sorted(nums, key=lambda n: -n)Usa lambdas para funciones desechables de una línea pasadas a sort/max/map.
-
-
Comprensiones
-
Lista
[n * 2 for n in nums] # [2, 4, 6] [n for n in nums if n > 1] # [2, 3] {n * 2 for n in nums} # setUn bucle for entre corchetes: la forma idiomática de transformar una lista.
-
Diccionario
{n: n ** 2 for n in range(4)} # {0: 0, 1: 1, 2: 4, 3: 9}La misma forma, con dos puntos entre la clave y el valor.
-
-
Archivos y CSV
-
Leer un archivo
text = open("file.txt").read() lines = text.splitlines()La lectura más sencilla; usa with open(...) as f cuando necesites procesar por tramos.
-
Filas CSV
import csv with open('data.csv') as f: rows = list(csv.reader(f))rows[0] es la cabecera; cada fila siguiente es una lista de cadenas: conviértelas a números antes de calcular.
-
-
pandas (Análisis de datos)
-
Cargar y echar un vistazo
import pandas as pd df = pd.read_csv('data.csv') df.head() # first 5 rows df.describe() # numeric summaryLa fórmula estándar: pd.read_csv es cómo empieza toda lección de datos.
-
Columnas y filas
df['name'] # one column df[['a', 'b']] # several df.loc[0] # first row df[df['age'] > 30] # filter rowsCorchetes sobre un nombre de columna; máscaras booleanas para filtrar.
-
Agrupar y agregar
df.groupby('city')['sales'].sum() df.groupby('city').mean()groupby más un método de resumen es el eje de la sección de Análisis de datos.
-
-
Recuperación de errores
-
Lee la última línea
TypeError: unsupported operand type(s) for +: 'int' and 'str'La última línea nombra el error y los valores ofensivos: es el mensaje que dice qué corregir.
-
try / except
try: total = int(user_input) * 2 except ValueError: print('That was not a number')Captura solo el error concreto que esperas; capturarlo todo oculta errores reales.
-