1.1 · Variables, tipos y operadores

Nivel 1 · Fundamentos del lenguaje

1.1Variables, tipos y operadores

Objetivo: manipular números, cadenas, booleanos y conversiones de tipos, y utilizar los operadores aritméticos y de comparación sin confundirlos.
Tiempo estimado: 14 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

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.

Error frecuente de interpretación: « = copia el valor » o « Python lo convierte todo solo ». No. = pega una etiqueta: a = b = [] y luego a.append(1) también modifica b — dos etiquetas, un solo objeto (copia con list() o .copy()). Y Python no mezcla texto y número solo: "3" + 4 lanza TypeError — te toca convertir explícitamente con int(), float() o str().
Variables y tipos Nombrar, tipar, calcular Etiqueta (=) Un nombrepuesto sobre un objetoTipos (fuertes) int, float,str, bool + conversionesOperadores (= frente a ==) Asigna,compara, identifica (is)
Nombrar, tipar, calcular
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Nombrar: Nabil pega etiquetas explícitas en snake_case sobre cada valor — Python deduce el tipo, type() lo verifica. 2) Convertir: el texto de input() pasa por int() antes de cualquier cálculo, las f-strings ensamblan sin error de tipo. 3) Calcular: / en float, // entero, % resto, ** potencia; = asigna, == compara, is identifica. Lección: etiqueta + conversión explícita + operador correcto, y las bases ya no mienten.

🔎 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

  1. 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).
  2. Prueba los operadores: 7 // 2 (división entera), 7 % 2 (resto/módulo), 2 ** 10 (potencia). Prevé el resultado antes de ejecutar.
  3. Provoca el error clásico: print("J'ai " + age) → TypeError. Corrige con una f-string: print(f"J'ai {age} ans").
  4. 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.
Creas variables, reconoces su tipo y conviertes correctamente — sobre todo el texto devuelto por input() en número.

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.

Lista de salida de la sección
  • 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 ==.
Autoevaluación 1-5: ¿convierto explícitamente en lugar de sufrir el TypeError?¿mis variables tienen nombres claros en snake_case?

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.

Comprueba tu comprensión

¿Qué devuelve siempre la función input()?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 1Preguntas inéditas y más difíciles para validar tus conocimientos