Variables y tipos de datos en Python: guía con ejercicios
Actualizado el 29 de septiembre de 2026
Todo programa trabaja con datos: un nombre, una edad, un precio, si un usuario pagó o no. Una variable es un nombre que le pones a un dato para poder usarlo después. En Python crear una variable es tan simple como escribir el nombre, un signo = y el valor.
En esta guía vas a ver cómo crear variables, qué tipos de datos básicos existen, cómo convertir de un tipo a otro y cómo armar textos con valores dentro. Es el primer paso de todo lo demás, así que vale la pena entenderlo bien.
Crear y cambiar variables
nombre = "Camila"
edad = 21
altura = 1.68
edad = 22 # una variable puede cambiar de valor
print(nombre, edad) # Camila 22El signo = no significa "es igual a" como en matemáticas: significa "guarda este valor con este nombre". Por eso edad = edad + 1 tiene sentido: toma el valor actual, le suma 1 y lo vuelve a guardar.
Reglas y costumbres para los nombres:
- Pueden tener letras, números y guiones bajos, pero no pueden empezar con un número:
precio2sí,2preciono. - Distinguen mayúsculas:
edadyEdadson dos variables distintas. - No pueden ser palabras reservadas del lenguaje, como
if,forodef. - Por convención se escriben en minúsculas con guiones bajos (
precio_con_iva), y conviene que digan qué guardan:totales mejor quet.
Los tipos de datos básicos
Cada valor tiene un tipo, que determina qué se puede hacer con él. Python lo deduce solo, sin que tengas que declararlo, y la función type() te dice cuál es:
type(21) # <class 'int'> número entero
type(1.75) # <class 'float'> número con decimales
type("Camila") # <class 'str'> texto (string)
type(True) # <class 'bool'> verdadero o falso
type(None) # <class 'NoneType'> "ningún valor"int: enteros, positivos o negativos, sin límite de tamaño.float: números con punto decimal. Se escriben con punto, nunca con coma:1.75.str: texto, entre comillas simples o dobles ('hola'y"hola"son lo mismo).bool: solo dos valores,TrueyFalse, con mayúscula inicial.None: representa la ausencia de valor, por ejemplo un dato que todavía no se conoce.
Convertir de un tipo a otro
Las funciones int(), float(), str() y bool() convierten un valor al tipo correspondiente:
int("42") # 42
float("3.5") # 3.5
str(10) # '10'
int(3.9) # 3 (corta los decimales, no redondea)
round(3.9) # 4
int("3.5") # ValueError: invalid literal for int() with base 10: '3.5'Esto importa mucho con input(), la función que lee lo que escribe el usuario: siempre devuelve texto, aunque el usuario escriba un número. Para hacer cuentas con ese valor, primero hay que convertirlo: edad = int(input("Tu edad: ")).
Con bool(), los valores "vacíos" (0, "", [], None) se convierten en False y todo lo demás en True. Ojo: bool("0") es True, porque es un texto que no está vacío.
Textos con valores dentro: f-strings
Para armar un texto que incluya variables, lo más cómodo es una f-string: una f antes de las comillas y cada valor entre llaves. Dentro de las llaves puede ir cualquier expresión, y después de : se puede indicar un formato.
nombre = "Camila"
edad = 21
precio = 1990.5
f"{nombre} tiene {edad} años" # 'Camila tiene 21 años'
f"El próximo año: {edad + 1}" # 'El próximo año: 22'
f"{precio:.2f}" # '1990.50' (dos decimales)Asignación múltiple
Python permite asignar varias variables en una línea. Un uso práctico es intercambiar dos valores sin una variable auxiliar:
a, b = 1, 2
a, b = b, a
print(a, b) # 2 1Errores comunes
Sumar texto y números
"Edad: " + 21
# TypeError: can only concatenate str (not "int") to strPython no convierte los tipos por su cuenta. Usa una f-string (f"Edad: {21}") o convierte el número con str().
Olvidar convertir lo que devuelve input()
Si el usuario escribe 10 y 5, input() + input() da "105": se unieron dos textos. Con int(input()) + int(input()) el resultado es 15.
NameError por una mayúscula
NameError: name 'Edad' is not defined casi siempre significa que el nombre está mal escrito: se creó edad y se usó Edad. Revisa mayúsculas, tildes y guiones bajos.
Esperar decimales exactos
0.1 + 0.2 # 0.30000000000000004
round(0.1 + 0.2, 2) # 0.3Los float se guardan en binario y algunos decimales no tienen representación exacta. No es un error de Python: pasa en casi todos los lenguajes. Para mostrar resultados, redondea con round() o con un formato como :.2f.
Ejercicios resueltos
Intenta resolver cada ejercicio antes de abrir la solución: equivocarse y corregir es la parte que más enseña.
1.Describir a una persona
Los ejercicios se escriben como funciones: def crea la función, los valores de entrada llegan entre paréntesis y return entrega el resultado. Se explican a fondo en la guía de funciones; por ahora basta con completar el return.
Escribe una función describir(nombre, edad) que devuelva el texto "<nombre> tiene <edad> años".
describir("Camila", 21)→"Camila tiene 21 años"
def describir(nombre, edad):
return ...Ver soluciónOcultar solución
def describir(nombre, edad):
return f"{nombre} tiene {edad} años"Una f-string arma el texto directamente, sin importar que edad sea un número. La alternativa con + obliga a convertir: nombre + " tiene " + str(edad) + " años", que es más largo y más fácil de equivocar (un espacio que falta, un str() olvidado).
2.Celsius a Fahrenheit
Escribe una función celsius_a_fahrenheit(celsius) que convierta una temperatura usando la fórmula F = C × 9 / 5 + 32.
celsius_a_fahrenheit(25)→77.0celsius_a_fahrenheit(0)→32.0celsius_a_fahrenheit(-40)→-40.0
def celsius_a_fahrenheit(celsius):
return ...Ver soluciónOcultar solución
def celsius_a_fahrenheit(celsius):
return celsius * 9 / 5 + 32La fórmula se traduce casi literal. El resultado es float (77.0 y no 77) porque la división / en Python siempre devuelve un float, aunque el resultado sea exacto. Si necesitas un entero, puedes envolverlo en round().
3.Sumar números que llegan como texto
Escribe una función sumar_textos(a, b) que reciba dos números enteros escritos como texto y devuelva su suma como número.
sumar_textos("12", "30")→42sumar_textos("-5", "5")→0
def sumar_textos(a, b):
return ...Ver soluciónOcultar solución
def sumar_textos(a, b):
return int(a) + int(b)Es la misma situación que con input() o con datos que vienen de un archivo: los números llegan como texto. Sin convertir, a + b devolvería "1230". int() entiende también el signo negativo, así que "-5" funciona sin casos especiales.