Saltar al contenido
🐍 Curso de Python
/

Módulo 1 · Lección 7 de 59

Tipos de datos y conversiones

Los cinco tipos básicos, cómo saber cuál tienes delante, cómo pasar de uno a otro y qué conversiones fallan.

⏱ 10 min de lectura

Los tipos básicos#

Todo dato en Python tiene un tipo, que determina qué se puede hacer con él. Los que necesitas ahora son cinco:

TipoNombreQué guardaEjemplo
EnterointNúmeros sin decimales42, -7, 0
DecimalfloatNúmeros con decimales3.14, -0.5
CadenastrTexto"hola", "42"
BooleanoboolVerdadero o falsoTrue, False
NuloNoneTypeLa ausencia de valorNone
python
print(type(42))
print(type(3.14))
print(type("hola"))
print(type(True))
print(type(None))
Salida en pantalla
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'NoneType'>

Comprobar el tipo#

type() te lo dice, pero para tomar decisiones en el código se usa isinstance(), que devuelve True o False:

python
dato = 42

print(isinstance(dato, int))
print(isinstance(dato, str))
Salida en pantalla
True
False

Las funciones de conversión#

Cada tipo tiene una función con su mismo nombre que convierte a él. Se llaman constructores:

python
print(int("42"))         # texto a entero
print(float("3.14"))     # texto a decimal
print(str(42))           # número a texto
print(bool(1))           # número a booleano
Salida en pantalla
42
3.14
42
True

De texto a número#

Es la conversión que más harás, porque input() siempre entrega texto:

python
print(int("100") + 5)
print(float("19.99") * 2)
Salida en pantalla
105
39.98

Pero solo funciona si el texto contiene realmente un número:

python
int("hola")     # ValueError
int("12.5")     # ValueError: int() no acepta decimales en texto
int("")         # ValueError
int(" 42 ")     # esto sí funciona: ignora los espacios de los extremos

De decimal a entero#

int() no redondea, trunca: simplemente tira la parte decimal.

python
print(int(9.99))      # 9, no 10
print(int(-9.99))     # -9, corta hacia el cero
print(round(9.99))    # 10, esto sí redondea
Salida en pantalla
9
-9
10

Recuérdalo: si quieres redondear, round(). Si quieres quedarte con la parte entera, int().

De número a texto#

Siempre funciona, nunca falla:

python
edad = 34
print("Tengo " + str(edad) + " años")

En la práctica casi nunca escribirás str() a mano, porque las f-strings convierten solas:

python
print(f"Tengo {edad} años")

Conversiones a booleano#

bool() sigue una regla sencilla: casi todo es verdadero, salvo el vacío y el cero.

python
print(bool(0), bool(1), bool(-5))
print(bool(""), bool("hola"), bool("0"))
print(bool(None))
Salida en pantalla
False True True
False True True
False

Los valores que dan False se llaman falsy y son pocos: 0, 0.0, "", None, y las colecciones vacías que veremos más adelante. Todo lo demás es True.

Conversiones implícitas#

En algunos casos Python convierte por su cuenta, sin que se lo pidas:

python
resultado = 3 + 0.5        # int + float da float
print(resultado, type(resultado))

print(True + True)         # los booleanos valen 1 y 0
Salida en pantalla
3.5 <class 'float'>
2

Lo que nunca hace automáticamente es convertir entre texto y número. Esa frontera siempre la cruzas tú a mano, y es una decisión de diseño deliberada: "5" + 5 es ambiguo, podría ser 10 o "55", así que Python prefiere dar error a adivinar.

Un validador sencillo#

Con lo que sabes puedes escribir esto, que anticipa la lección de condiciones:

python
entrada = input("Escribe un número entero: ").strip()

if entrada.isdigit():
        numero = int(entrada)
    print(f"Su doble es {numero * 2}")
else:
        print("Eso no era un número entero.")
Salida en pantalla
Escribe un número entero: 21
Su doble es 42

Tabla de conversiones#

DesdeHastaCómoCuidado
strintint("42")ValueError si no es un entero
strfloatfloat("3.14")ValueError si no es un número
floatintint(9.99)Trunca, no redondea
intfloatfloat(3)Nunca falla
Cualquierastrstr(x)Nunca falla
Cualquieraboolbool(x)Vacío y cero dan False