1.1Variables, tipos y operadores
Lo esencial en 30 segundos
- Variable = etiqueta sobre un objeto: age = 30 — Python deduce el tipo (int, float, str, bool), y = copia la etiqueta, no siempre el objeto.
- Tipado fuerte: convierte explícitamente: "3" + 4 falla — usa int(), float(), str(), y convierte el texto de input() antes de cualquier cálculo.
- = asigna, == compara, is identifica: / devuelve un float, // el cociente entero, % el resto, ** la potencia.
Minicaso guiado — Nabil, analista de datos junior en Argel
Nabil, analista de datos junior en Argel, prepara una limpieza de datos de encuesta: guarda el nombre del encuestado, su edad y su estatura en variables claras, y luego calcula el año de nacimiento a partir de una edad introducida. Con prisa, escribe print("J'ai " + age) y suma el texto devuelto por input() a un número: TypeError, y luego un total falso. Lo corrige con una f-string e int(): la edad se convierte en un verdadero número, el informe se muestra correctamente. Como extra, descubre que a = b = [] comparte una sola lista — a partir de ahora copiará con list().
Este mismo caso vuelve en el curso, el esquema, el guion y el desafío 48h — y continúa en 1.2, 1.3, 1.4 y 1.5.
1. Variables-etiquetas y tipos
Una variable es una etiqueta puesta sobre un valor: age = 30 pega la etiqueta « age » sobre el objeto 30. Python tiene un tipado dinámico (sin declaración previa) pero fuerte: "3" + 4 lanza un error en lugar de convertir en silencio. Cuatro tipos básicos: int (entero), float (decimal), str (texto, inmutable), bool (True/False, que dirige las condiciones). type() revela el tipo; nombra en snake_case explícito (age_repondant en lugar de x).
Nabil guarda nom = "Yasmine", age = 30, taille = 1.70: etiquetas que dicen lo que contienen, releídas sin esfuerzo cuando el jefe pide el informe.
2. Conversiones, input() y operadores
Se cambia de tipo explícitamente: int("30"), float("3.5"), str(30). Crucial: input() devuelve SIEMPRE texto — convierte con int() o float() antes de calcular. Operadores: / divide en float (7/2 = 3.5), // cociente entero (3), % resto (7%2 = 1), ** potencia. Y = asigna mientras que == compara (is comprueba la identidad): confundirlos en un test es el error n.º 1.
Nabil sustituye su concatenación errónea por f"J'ai {age} ans" y convierte la entrada con int(input(...)): el año de nacimiento se vuelve correcto y el error de tipo desaparece.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — La trampa de las dos etiquetas
Entiende la asignación, como Nabil con sus listas.
a = []
b = a # ¡mismo objeto!
a.append(1)
print(b) # [1]: una sola lista
b = a.copy() # copia real independiente
print("3" + str(4)) # "34": conversión explícita
print(7 // 2, 7 % 2, 2 ** 10) # 3 1 1024
Lectura: = copia la etiqueta, no el objeto — .copy() crea una lista independiente; str() hace posible la concatenación.
Lección: is comprueba la identidad, == la igualdad; //, % y ** tienen cada uno su papel.
Vocabulario de la sección
- Variable
- Nombre que referencia un valor en memoria (una etiqueta sobre un objeto). Asignación con = : ma_var = valeur.
Ejemplo sencillo: El nombre y la edad guardados por Nabil para su encuesta.
Lo que no es: una caja que contendría una copia en cada asignación.
Reflejo: piensa etiqueta, nombra en snake_case explícito.
- int / float
- Números enteros (int : 30) y con decimales (float : 3.14). La división / siempre devuelve un float; // devuelve el cociente entero.
Ejemplo sencillo: La edad (int) y la estatura (float) de los encuestados de Nabil.
Lo que no es: esperar 3 de 10 / 3 (es 3.333, un float).
Reflejo: / para lo real, // para el cociente, % para el resto.
- str (cadena)
- Texto entre comillas simples o dobles: "Bonjour". Inmutable (no modificable in situ); se ensambla con f-strings.
Ejemplo sencillo: El nombre del encuestado mostrado por Nabil en f-string.
Lo que no es: sumar "3" + 4 sin conversión.
Reflejo: texto + número = convierte primero (o f-string).
- bool
- Booleano: True o False. Resultado de las comparaciones, base de las condiciones del capítulo siguiente.
Ejemplo sencillo: El majeur = age >= 18 calculado por Nabil.
Lo que no es: confundir = (asignación) y == (comparación).
Reflejo: = asigna, == compara, is identifica.
- Conversión (casting)
- Cambiar de tipo explícitamente: int("30") da 30; str(30) da "30". Indispensable porque input() siempre devuelve texto.
Ejemplo sencillo: La edad introducida convertida por Nabil con int().
Lo que no es: calcular directamente sobre el texto de input().
Reflejo: input() = texto: int() o float() antes de calcular.
En la práctica — En la práctica — Manipular variables, tipos y conversiones
- Crea variables de cada tipo: nom = "Ada", age = 30, taille = 1.70, majeur = True. Muestra cada una con print() y su tipo con type(variable).
- Prueba los operadores: 7 // 2 (división entera), 7 % 2 (resto/módulo), 2 ** 10 (potencia). Prevé el resultado antes de ejecutar.
- Provoca el error clásico: print("J'ai " + age) → TypeError. Corrige con una f-string: print(f"J'ai {age} ans").
- Pide la edad con input(), conviértela en número (int(...)) y calcula el año de nacimiento: comprueba por qué la conversión es indispensable.
Guion listo para decir — justificar la conversión explícita (30 s)
« input() siempre devuelve texto, así que convierto con int() antes de calcular: si no, sumamos texto y número y falla — o peor, da un resultado falso. La conversión explícita hace visible la intención y el cálculo fiable. »
Para decir en revisión de código; muestra el TypeError antes/después.
Modelo copiar-pegar — variables, f-string y conversión de input()
nom = "Nabil"
age = 30
taille = 1.70
majeur = age >= 18
print(f"{nom} tiene {age} años, mayor de edad: {majeur}")
print(type(taille)) #
age_saisi = int(input("¿Edad? "))
annee_naissance = 2026 - age_saisi
print(f"Año de nacimiento: {annee_naissance}")
print(7 // 2, 7 % 2, 2 ** 10)
Encuesta en Argel
Como Nabil: variables nombradas por encuestado, f-string para el informe — el jefe relee una tabla nítida, sin TypeError.
Entrada por convertir
Todo input() pasa por int() o float() antes del cálculo: el año de nacimiento es correcto, el total también.
Operadores específicos
// para cuotas enteras, % para restos, ** para proyecciones — cada uno su operador, sin chapuzas.
Duda sobre un alias
Un type(obj) o un test is lo decide: la etiqueta se verifica, no se adivina — copia con list() si hace falta.
✓ Buenas prácticas
- Piensa etiqueta, no caja — y nombra en snake_case explícito.
- Convierte explícitamente (int/float/str), sobre todo el texto de input().
- Distingue = (asigna), == (compara) e is (identifica).
✗ Errores frecuentes
- Escribir a = b = [] y sorprenderte de que ambas se muevan juntas.
- Sumar "3" + 4 sin conversión (TypeError).
- Usar = en un if en lugar de ==.
Puntos clave
- Una variable es un nombre puesto sobre un valor (nom = valeur); Python deduce el tipo (dinámico) pero no mezcla los tipos solo (fuerte).
- Cuatro tipos básicos: int, float, str, bool — type() revela, int()/str() convierten.
- input() devuelve SIEMPRE texto: convierte con int() o float() para calcular.
- Operadores útiles: // (división entera), % (módulo), ** (potencia); = asigna, == compara, is identifica.
Desafío 48h — aplica mañana
Retoma uno de tus scripts (modelo anterior): convierte cada input() en int()/float(), sustituye cada concatenación + entre texto y número por una f-string, y renombra una variable críptica en snake_case. Ejecuta y verifica la visualización. 20 minutos bastan.
- Puedo explicar la etiqueta, el tipado fuerte y la conversión explícita.
- Convierto input() en número antes de cualquier cálculo.
- Elijo //, % y ** sin dudar, y distingo = de ==.
Preguntas frecuentes
¿Por qué 10 / 3 da 3.333 y no 3?
En Python 3, el operador / siempre realiza una división « real » y devuelve un float. Para obtener el cociente entero (3), usa la división entera //; para el resto, el módulo %. Es una elección asumida del lenguaje: la división exacta por defecto, el entero bajo petición explícita.
¿Qué diferencia hay entre = y ==?
Un solo = asigna un valor a una variable (x = 5). El doble == compara dos valores y devuelve True o False (x == 5). Confundirlos es un error muy frecuente al principio — e is comprueba la identidad (mismo objeto), no solo la igualdad.
¿Qué devuelve siempre la función input()?