Variables y tipos
Todo programa necesita recordar cosas. Un quiz necesita el nombre del jugador. Un juego necesita el puntaje actual. Un script del clima necesita la ciudad que estás consultando. Python usa variables para esto: nombres que le asignas a valores para poder usarlos en cualquier parte de tu programa.
player_name = "Alicia"
score = 0
city = "Ciudad de México"Tres líneas, tres cosas que Python ahora recuerda. En cada una, Python primero calcula el valor del lado derecho y luego lo guarda bajo el nombre del lado izquierdo. Cuando usas ese nombre más adelante, Python te devuelve el valor.
Almacenar un valor
El signo = confunde a casi todos los que vienen de la clase de matemáticas. En Python, = no significa "es igual a". Significa guarda este valor bajo este nombre:
city = "Ciudad de México"city recibe "Ciudad de México". Le estás diciendo a Python: recuerda "Ciudad de México" y etiquétalo como city.
Puedes reemplazar el valor de una variable en cualquier momento. Python usa el más reciente:
score = 0
score = 10 # score ahora es 10
score = 15 # score ahora es 15= no es el "igual" de la clase de matemáticas, es "guarda este valor bajo este nombre". Cámbialo cuando quieras y Python se queda con el más reciente. No hay que declarar nada, ni preparar nada: lo nombras y ya existe. A mí me tomó demasiado tiempo dejar de darle tantas vueltas a esto. Cómo nombrar tus variables
Tú eliges el nombre. Python tiene unas pocas reglas obligatorias, y la comunidad sigue convenciones que vale la pena adoptar desde el primer día. Los nombres claros hacen que el código sea legible semanas después. Los nombres crípticos causan dolores de cabeza.
Reglas que Python impone:
- Solo letras, números y guiones bajos. Sin espacios ni guiones medios.
- Debe empezar con una letra o un guion bajo, nunca con un número
- Distingue mayúsculas y minúsculas:
score,ScoreySCOREson tres variables distintas
Convenciones que todos siguen (PEP 8):
| Elemento | Estilo | Ejemplo |
|---|---|---|
| Variables y funciones | snake_case | user_name, total_price |
| Constantes | UPPER_SNAKE_CASE | MAX_RETRIES, BASE_URL |
| Clases | PascalCase | UserAccount, DataLoader |
# nombres claros, legibles de un vistazo
user_name = "Alicia"
total_price = 49.99
is_logged_in = True
MAX_RETRIES = 3
# te vas a arrepentir de estos en una hora
x = "Alicia"
tp = 49.99
b = TrueUna trampa que vale la pena conocer desde temprano: no le pongas a una variable el nombre de algo incorporado en Python, como list, input, type o print. Python te lo permite, pero vas a romper silenciosamente esa función incorporada por el resto de ese ámbito, y los errores resultantes son difíciles de rastrear.
snake_case y listo. Mi único error de principiante: no le pongas list o print a una variable. Python te lo permite, y luego todo se pone raro sin ninguna advertencia. Qué puedes almacenar
Python tiene cuatro tipos que vas a usar en casi todo programa. Python deduce a qué tipo te refieres a partir de cómo escribes el valor. Nunca declaras un tipo explícitamente.
Texto (str)
Cualquier texto va entre comillas, simples o dobles. Las comillas le indican a Python que te refieres a caracteres literales, no al nombre de una variable. Una vez creada, una cadena no se puede modificar en el mismo lugar. El capítulo Cadenas de texto cubre todo lo que puedes hacer con ellas.
player_name = "Alicia"
city = "Ciudad de México"
message = 'Fin del juego'Si tu texto contiene un apóstrofo, usa comillas dobles para evitar tener que escaparlo:
note = "Hoy es un gran día, ¿no?"
note = 'Hoy es un gran d\'ia, ¿no?' # mismo resultado, usando un escapeNúmeros enteros (int)
Los números enteros se escriben sin comillas ni punto decimal. Python los llama enteros (integers). Pueden ser tan grandes como necesites; Python maneja números arbitrariamente grandes sin ningún esfuerzo especial de tu parte.
score = 0
age = 28
population = 8_100_000_000 # los guiones bajos son solo para legibilidad8_100_000_000 están ahí solo para que puedas leerlo. Números decimales (float)
Cualquier número con punto decimal es un float. Funcionan como esperas en la mayoría de los cálculos. Algo que hay que saber: algunos valores decimales no se pueden almacenar de forma exacta en binario, así que puedes obtener un pequeño error de redondeo:
price = 4.99
temperature = 36.6
0.1 + 0.2 # 0.30000000000000004Para el trabajo cotidiano esto rara vez importa. Para cálculos financieros donde cuentan las fracciones de centavo, Python tiene un módulo decimal que lo maneja correctamente. Eso se cubre en el capítulo Números.
0.1 + 0.2 da 0.30000000000000004. No es un error, así es el binario. Para dinero, recurre a decimal.Decimal. Verdadero o Falso (bool)
Algunas cosas están encendidas o apagadas. Python usa booleanos para esto: exactamente dos valores, True y False. Parecen poco importantes en esta etapa, pero cada condición y cada rama de tu programa se basa en un booleano.
is_logged_in = True
has_errors = FalsePython también trata ciertos valores como si fueran False cuando se usan en una condición: 0, 0.0, "" y None (el "aquí no hay valor" de Python) se comportan todos como False. Todo lo demás se comporta como True. Esto se vuelve útil en el capítulo Flujo de control.
True y False, y están detrás de cada if que vayas a escribir. La parte divertida: 0, "", [] y None cuentan todos como False, todo lo demás cuenta como True. Verificar y convertir tipos
Cuando no estés seguro de qué tipo es un valor, type() te lo dice. Para verificar si un valor es de un tipo específico, isinstance() es la herramienta más confiable:
print(type("hola")) # <class 'str'>
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
isinstance(42, int) # True
isinstance("hola", str) # TruePython no mezcla tipos automáticamente. Concatenar una cadena y un número lanza un TypeError:
score = 42
print("Tu puntaje es " + score) # TypeError
print("Tu puntaje es " + str(score)) # funcionaConvierte explícitamente usando el nombre del tipo como una función:
| Llamada | Resultado |
|---|---|
str(42) | "42" |
int(3.9) | 3 (trunca, no redondea) |
float("3.14") | 3.14 |
int("3.14") | ValueError: no se puede convertir directamente una cadena decimal a int |
int(float("3.14")) | 3 (convierte primero a float, luego a int) |
bool(0) / bool("") | False |
type() te dice qué es algo, isinstance() verifica si es de un tipo dado. Y Python no va a pegar una cadena y un número, así que convierte primero con str() o int(). Todo el mundo se tropieza con eso una vez. En la práctica
Los cuatro tipos trabajando juntos en un pequeño script. Las líneas de salida usan f-strings para incrustar valores en el texto: pon f antes de la comilla de apertura y envuelve cualquier variable en {}. Python la reemplaza con el valor real de la variable. Las aprenderás bien en el próximo capítulo.
player_name = "Alicia"
level = 3
accuracy = 0.94
is_premium = True
print(f"{player_name} está en el nivel {level} con {accuracy:.0%} de precisión.")
print(f"Cuenta premium: {is_premium}")Los tipos importan porque level + 1 funciona y player_name + 1 no. Cada variable guarda exactamente un tipo de cosa; Python no los va a mezclar silenciosamente por ti.

