Saltar al contenido

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.

Las variables son contenedores con nombre. El tipo se deduce automáticamente del valor que guardan.

### 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 etiqueta
2nombre = "Carlos"
3edad = 25
4altura = 1.78
5es_estudiante = True
6
7# Leer variables: usarlas por su nombre
8print(nombre) # Muestra: Carlos
9print(edad) # Muestra: 25
10print(es_estudiante) # Muestra: True
11
12# Usar variables dentro de texto con f-strings
13print(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 ellos
2precio = 29.99
3cantidad = 3
4total = precio * cantidad
5print(f"Total: {total} euros") # Total: 89.97
6
7# Texto: puedes concatenarlo (pegarlo)
8nombre = "Ana"
9apellido = "García"
10nombre_completo = nombre + " " + apellido
11print(nombre_completo) # Ana García
12
13# Booleanos: para decisiones
14mayor_de_edad = True
15tiene_carnet = False
16print(f"¿Mayor de edad? {mayor_de_edad}") # ¿Mayor de edad? True
17
18# CUIDADO: "3" + "5" no es 8, ¡es "35"! (concatenación de texto)
19resultado_texto = "3" + "5"
20resultado_numero = 3 + 5
21print(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úmeros
2sueldo_mensual = 2500
3meses = 12
4sueldo_anual = sueldo_mensual * meses
5print(f"Sueldo anual: {sueldo_anual} euros") # 30000
6
7# Operaciones útiles
8propina = 45.60
9personas = 4
10por_persona = propina / personas
11print(f"Cada uno paga: {por_persona} euros") # 11.4
12
13# El operador % (módulo) da el RESTO de la división
14galletas = 10
15amigos = 3
16sobran = galletas % amigos
17print(f"Sobran {sobran} galletas") # Sobran 1 galleta
18
19# Reasignar: cambiar el contenido de la caja
20contador = 0
21print(f"Contador: {contador}") # 0
22contador = contador + 1
23print(f"Contador: {contador}") # 1
24contador = contador + 1
25print(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 REPITE
2linea = "-" * 36
3print(linea) # ------------------------------------ (36 guiones)
4
5igual = "=" * 20
6print(igual) # ==================== (20 signos igual)
7
8# Sirve para enmarcar la salida y que se lea de un vistazo
9print("=" * 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 usuario
2nombre = input("¿Cómo te llamas? ")
3print(f"¡Hola, {nombre}! Bienvenido al programa.")
4
5# Pedir un número (¡hay que convertirlo!)
6edad_texto = input("¿Cuántos años tienes? ")
7edad = int(edad_texto) # Convertir texto → número entero
8print(f"El año que viene tendrás {edad + 1} años")
9
10# Versión compacta: convertir directamente
11peso = 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 descriptivos
2nombre_usuario = "Ana"
3total_factura = 156.80
4numero_intentos = 3
5es_valido = True
6
7# [ERROR] Nombres que DAN ERROR
8# 2nombre = "Ana" # No puede empezar con número
9# nombre usuario = "Ana" # No puede tener espacios
10# if = 5 # "if" es palabra reservada
11
12# [ERROR] Nombres que FUNCIONAN pero son horribles
13x = "Ana" # ¿Qué es x? Nadie lo sabe
14tf = 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...