lección 2
Variables: cajas con etiqueta para guardar cosas
Las variables son la memoria de tu programa. Aprende a guardar datos, nombrarlos bien y operar con ellos.
⏱ 50 min
En la lección anterior, tu programa hacía cosas pero no recordaba nada. Cada print() mostraba un texto fijo y se olvidaba inmediatamente. Eso es como un chef que no tiene encimera — cocina cada ingrediente y lo tira al suelo antes de poder combinarlo con los demás. Para hacer cualquier cosa útil, un programa necesita MEMORIA. Necesita poder guardar datos temporalmente para usarlos después. Eso es exactamente lo que son las variables.
### La metáfora: cajas con etiqueta
Imagina un almacén lleno de cajas. Cada caja tiene una etiqueta con un nombre escrito con rotulador (por ejemplo: "edad", "nombre_cliente", "total_factura") y dentro de la caja hay un valor (por ejemplo: 28, "María López", 156.80). Una variable es exactamente eso: un nombre que apunta a un valor guardado en la memoria del ordenador.
Puedes hacer tres cosas con una caja: guardar algo dentro (asignar un valor), mirar qué hay dentro (leer el valor) o cambiar lo que hay dentro (reasignar). Y lo mejor: puedes tener tantas cajas como necesites. El almacén es enorme.
### Crear y usar variables en Python
En Python, crear una variable es tan simple como escribir un nombre, el signo = (que aquí no significa "es igual a" sino "guarda esto aquí") y el valor que quieres almacenar:
1# Crear variables es como poner cosas en cajas con etiqueta2nombre = "Carlos"3edad = 254altura = 1.785es_estudiante = True67# Leer variables: usarlas por su nombre8print(nombre) # Muestra: Carlos9print(edad) # Muestra: 2510print(es_estudiante) # Muestra: True1112# Usar variables dentro de texto con f-strings13print(f"Me llamo {nombre}, tengo {edad} años y mido {altura}m")
El signo = significa "guarda este valor con este nombre". La f antes de las comillas permite insertar variables dentro del texto.
### Los tipos de datos: no todo cabe en la misma caja
Imagina que en tu almacén tienes cajas de diferentes materiales. No meterías agua en una caja de cartón ni un elefante en una cajita de cerillas. Los valores también tienen "tipo" — el ordenador necesita saber si algo es un número (para poder sumar), un texto (para poder mostrarlo) o un verdadero/falso (para tomar decisiones). En Python hay cuatro tipos básicos:
- int (entero) — números sin decimales: 1, 42, -7, 1000000
- float (decimal) — números con punto decimal: 3.14, -0.5, 99.99
- str (string/texto) — cualquier texto entre comillas: "hola", "123", "María López"
- bool (booleano) — solo dos valores posibles: True o False (con mayúscula inicial)
Un detalle importante: "42" (con comillas) y 42 (sin comillas) son cosas DIFERENTES. Con el número puedes hacer cuentas; con el texto no. Y cuidado, porque el sumar sí que "funciona" con texto, solo que hace otra cosa: "3" + "1" no da 4, da "31" — pega los dos textos uno detrás de otro. Y no da ningún error, así que es de los fallos que no te enteras hasta mucho después. Las comillas son las que deciden si algo es texto o número.
1# Números: puedes hacer matemáticas con ellos2precio = 29.993cantidad = 34total = precio * cantidad5print(f"Total: {total} euros") # Total: 89.9767# Texto: puedes concatenarlo (pegarlo)8nombre = "Ana"9apellido = "García"10nombre_completo = nombre + " " + apellido11print(nombre_completo) # Ana García1213# Booleanos: para decisiones14mayor_de_edad = True15tiene_carnet = False16print(f"¿Mayor de edad? {mayor_de_edad}") # ¿Mayor de edad? True1718# CUIDADO: "3" + "5" no es 8, ¡es "35"! (concatenación de texto)19resultado_texto = "3" + "5"20resultado_numero = 3 + 521print(resultado_texto) # 35 (pegó dos textos)22print(resultado_numero) # 8 (sumó dos números)
El tipo importa: sumar números da un resultado matemático. "Sumar" textos los pega uno detrás del otro.
Consejo de senior: nombra tus variables como si otro programador fuera a leer tu código mañana (porque TÚ MISMO dentro de dos semanas eres ese "otro programador"). Usa nombres descriptivos: total_factura es infinitamente mejor que t o tf. Los minutos que "ahorras" con nombres cortos los pierdes multiplicados por 10 cuando intentas entender tu propio código un mes después.
### Operaciones: lo que puedes hacer con las cajas
Las variables no solo almacenan datos — puedes operar con ellos. Con números puedes sumar (+), restar (-), multiplicar (*), dividir (/), hacer división entera (//), obtener el resto (%) y elevar a una potencia (**). Con texto puedes concatenar (+) y repetir (*). Es como tener una calculadora programable.
1# Operaciones con números2sueldo_mensual = 25003meses = 124sueldo_anual = sueldo_mensual * meses5print(f"Sueldo anual: {sueldo_anual} euros") # 3000067# Operaciones útiles8propina = 45.609personas = 410por_persona = propina / personas11print(f"Cada uno paga: {por_persona} euros") # 11.41213# El operador % (módulo) da el RESTO de la división14galletas = 1015amigos = 316sobran = galletas % amigos17print(f"Sobran {sobran} galletas") # Sobran 1 galleta1819# Reasignar: cambiar el contenido de la caja20contador = 021print(f"Contador: {contador}") # 022contador = contador + 123print(f"Contador: {contador}") # 124contador = contador + 125print(f"Contador: {contador}") # 2
Las variables pueden cambiar de valor. contador = contador + 1 lee el valor actual, le suma 1 y guarda el resultado.
Y hay un uso del operador * que parece un capricho y resulta utilísimo: si multiplicas un texto por un número, lo repite. "ab" * 3 es "ababab". Suena a curiosidad de examen, pero es la forma de dibujar líneas, bordes y separadores sin teclear cuarenta guiones a mano — y lo agradecerás en cuanto quieras que la salida de tu programa se vea ordenada en vez de un amasijo de líneas.
1# Multiplicar un texto por un número lo REPITE2linea = "-" * 363print(linea) # ------------------------------------ (36 guiones)45igual = "=" * 206print(igual) # ==================== (20 signos igual)78# Sirve para enmarcar la salida y que se lea de un vistazo9print("=" * 30)10print(" REPORTE DE VENTAS")11print("=" * 30)
El operador * con texto repite la cadena. "-" * 36 son 36 guiones sin escribirlos uno a uno.
### Input: pedir datos al usuario
Hasta ahora tus programas son "monólogos" — hablan pero no escuchan. La función input() permite que tu programa haga una pregunta y espere una respuesta del usuario. Lo que el usuario escriba se guarda en una variable. Ojo importante: input() SIEMPRE devuelve texto (string), aunque el usuario escriba un número. Si necesitas hacer matemáticas con ello, tienes que convertirlo con int() o float().
1# Pedir texto al usuario2nombre = input("¿Cómo te llamas? ")3print(f"¡Hola, {nombre}! Bienvenido al programa.")45# Pedir un número (¡hay que convertirlo!)6edad_texto = input("¿Cuántos años tienes? ")7edad = int(edad_texto) # Convertir texto → número entero8print(f"El año que viene tendrás {edad + 1} años")910# Versión compacta: convertir directamente11peso = float(input("¿Cuánto pesas en kg? "))12altura = float(input("¿Cuánto mides en metros? "))13imc = peso / (altura ** 2)14print(f"Tu IMC es: {imc:.1f}") # :.1f muestra 1 decimal
input() siempre devuelve texto. Usa int() para enteros y float() para decimales.
Aquí, en el editor de la web, input() no se para a preguntarte: se inventa un valor de ejemplo y te lo marca con "← (valor simulado)". Es la única forma de que un programa que hace preguntas funcione dentro de un navegador sin quedarse colgado esperando. Para verlo preguntar de verdad, guarda el código en un fichero y ejecútalo en tu terminal con python3 fichero.py — que es como se ejecutan los programas fuera de aquí.
Si el usuario escribe "veinte" cuando tu programa espera un número, int("veinte") explotará con un ValueError. Por ahora no te preocupes — en Python desde cero aprenderás a manejar estos errores con try/except. Solo recuerda: input() + int()/float() es la combinación para pedir números.
### Reglas para nombrar variables
Python tiene reglas estrictas sobre qué nombres puedes usar para tus cajas. No es capricho — es para evitar confusiones con el propio lenguaje:
- Solo letras, números y guion bajo (_). Nada de espacios ni de caracteres especiales como -, €, o ?.
- Las tildes y la ñ SÍ funcionan (año = 2026 es correcto), pero por costumbre no se usan: el código se comparte con gente que no tiene la ñ en su teclado, y todo lo que hay alrededor — librerías, mensajes de error, documentación — está en inglés. Escribe anio o year, no año.
- NO puede empezar con un número. 2nombre es inválido, nombre2 está bien.
- Distingue mayúsculas de minúsculas. edad, Edad y EDAD son tres variables DIFERENTES.
- No uses palabras reservadas de Python: if, for, while, True, False, def, class, import, return… Son 35 en total y las irás reconociendo. Si usas una, Python te lo dice al instante con un error de sintaxis.
- Y ojo con otro grupo distinto: print, sum, list, type… no están prohibidas, pero si las usas como nombre de variable dejan de funcionar como antes. print = 5 no da error; el error sale después, cuando intentas imprimir algo, y no te dice dónde estuvo el problema. Esos son peores, porque no avisan.
- Convención en Python: usa snake_case (palabras_separadas_por_guiones_bajos).
1# [OK] Nombres correctos y descriptivos2nombre_usuario = "Ana"3total_factura = 156.804numero_intentos = 35es_valido = True67# [ERROR] Nombres que DAN ERROR8# 2nombre = "Ana" # No puede empezar con número9# nombre usuario = "Ana" # No puede tener espacios10# if = 5 # "if" es palabra reservada1112# [ERROR] Nombres que FUNCIONAN pero son horribles13x = "Ana" # ¿Qué es x? Nadie lo sabe14tf = 156.80 # ¿Total factura? ¿Temperatura final?15n = 3 # ¿Número de qué?
Un buen nombre de variable debe explicar qué contiene sin necesidad de comentarios.
### Resumen: tu programa ahora tiene memoria
- Una variable es un nombre que apunta a un valor en la memoria.
- Se crea con: nombre = valor (el = es asignación, no igualdad).
- Los tipos básicos son: int, float, str y bool.
- Las comillas determinan si algo es texto ("42") o número (42).
- input() pide datos al usuario (siempre devuelve texto).
- int() y float() convierten texto a número.
- Las variables pueden cambiar de valor (reasignación).
- Usa nombres descriptivos en snake_case.
Regístrate para guardar tu progreso.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...