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. El primero es texto — no puedes sumarle nada. El segundo es un número — puedes hacer matemáticas con él. Las comillas son las que determinan si algo es texto o número. Es como la diferencia entre el billete de 20€ (puedes pagar con él) y una foto de un billete de 20€ (no puedes pagar con ella aunque se vea igual).

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.

Si el usuario escribe "veinte" cuando tu programa espera un número, int("veinte") explotará con un ValueError. Por ahora no te preocupes — en la Skill 3 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, tildes ni caracteres especiales.
  • 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, print, etc.
  • Convención en Python: usa snake_case (palabras_separadas_por_guiones_bajos).
1# ✅ Nombres correctos y descriptivos
2nombre_usuario = "Ana"
3total_factura = 156.80
4numero_intentos = 3
5es_valido = True
6
7# ❌ 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# ❌ 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.

## ejercicios

[01]

Calculadora de propinas

Cenáis 4 personas, la cuenta es de 48.00 € y queréis dejar un 12% de propina. Calcula la propina, el total con propina, y lo que paga cada uno.

💡 Resultado esperado

Cuenta: 48.00 €
Propina (12%): 5.76 €
Total: 53.76 €
Cada persona paga: 13.44 €
Cargando editor...
[02]

Conversor de temperatura

Convierte 21.5 grados Celsius a Fahrenheit con la fórmula F = C × 9/5 + 32. Guarda el resultado en la variable fahrenheit.

💡 Resultado esperado

21.5°C equivale a 70.7°F
Cargando editor...
[03]

Generador de tarjeta de presentación

El programa genera una tarjeta de presentación con bordes de caracteres. El separador ya está hecho con el operador * (fíjate en cómo funciona). Tu tarea: añade las dos líneas que faltan (Profesión y Email) usando f-strings, con el mismo formato que la de Nombre.

💡 Resultado esperado

+------------------------------------+
|  Nombre: Marta Ruiz
|  Profesión: Analista de datos
|  Email: marta@ejemplo.com
Cargando editor...
[04]

Contador de calorías del desayuno

Has desayunado 2 tostadas, 2 huevos, 3 piezas de fruta y 2 cafés. Calcula las calorías de cada grupo y el total.

💡 Resultado esperado

Tostadas (2x): 240 cal
Huevos (2x): 310 cal
Frutas (3x): 180 cal
Cafés (2x): 160 cal
Cargando editor...

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...