Tipos de datos: números, booleanos y None
En la lección anterior vimos las cadenas de texto (strings). Ahora veremos cómo Python maneja los números, los estados lógicos y la ausencia de valor.
Números: enteros (int) y decimales (float)
Python distingue principalmente entre dos tipos de números:
int(integer): números enteros, sin decimales (positivos, negativos o cero).float(floating point): números con decimales. Se usa el punto.como separador decimal, nunca la coma.
>>> vidas = 7
>>> pi = 3.1416
>>> temperatura = -10
>>> precio = 19.99
Operaciones matemáticas básicas
Puedes usar Python como una calculadora directamente en la consola:
>>> 10 + 5 # suma
15
>>> 20 - 7 # resta
13
>>> 4 * 3 # multiplicación
12
>>> 15 / 4 # división (siempre devuelve un float)
3.75
>>> 15 // 4 # división entera (descarta los decimales)
3
>>> 10 % 3 # módulo: resto de la división
1
>>> 2 ** 3 # potencia (2 elevado a 3)
8
Nota: El operador / siempre devuelve un float, incluso si el resultado es exacto (10 / 2 da 5.0, no 5). Si necesitas un entero, usa //.
Precedencia de operadores
Cuando una expresión combina varios operadores, Python los evalúa en un orden fijo. De mayor a menor prioridad:
**: potencia*,/,//,%: multiplicación, división, división entera, módulo+,-: suma y resta
Operadores del mismo nivel se evalúan de izquierda a derecha, excepto **, que se evalúa de derecha a izquierda.
>>> 2 + 3 * 4 # primero 3*4, luego +2
14
>>> 10 - 6 / 2 # primero 6/2, luego 10-
7.0
>>> 2 ** 3 ** 2 # 3**2 = 9, luego 2**9 (derecha a izquierda)
512
Usa paréntesis para forzar el orden que necesitas: son la herramienta más clara y no cuestan nada:
>>> (2 + 3) * 4 # primero la suma
20
>>> (10 - 6) / 2 # primero la resta
2.0
>>> (2 ** 3) ** 2 # primero 2**3 = 8, luego 8**2
64
Nota: Ante la duda, pon paréntesis aunque no sean estrictamente necesarios. Hacen la intención evidente y evitan errores difíciles de detectar.
Mezcla de tipos numéricos
Cuando operas un int con un float, Python convierte el resultado a float automáticamente:
>>> 3 + 1.5
4.5
>>> type(3 + 1.5)
Booleanos
Los booleanos representan valores de verdad: verdadero o falso. Son fundamentales para que el programa tome decisiones.
En Python, los booleanos se representan con True y False, siempre con la primera letra en mayúscula:
>>> es_valido = True
>>> partida_terminada = False
Cualquier comparación produce un booleano:
>>> print(10 > 5)
True
>>> print(10 == 8) # doble signo igual para comparar
False
>>> print(10 != 8) # distinto de
True
El valor None
None es un valor especial que representa la ausencia de valor. No es lo mismo que el número 0, ni que una cadena vacía "", ni que False.
>>> resultado = None
>>> print(resultado)
None
>>> type(resultado)
Se usa cuando quieres declarar una variable antes de conocer su valor, o cuando una función no tiene nada útil que devolver.
La función type()
Cuando recibes datos de fuentes externas no siempre sabes de qué tipo son. La función integrada type() te lo dice:
>>> nombre = "Cristina"
>>> edad = 25
>>> puntuacion = 9.5
>>> es_jugador = True
>>> type(nombre)
>>> type(edad)
>>> type(puntuacion)
>>> type(es_jugador)
La función isinstance()
type() te dice qué tipo tiene una variable, pero en el código real casi siempre necesitas una comprobación que devuelva True o False. Para eso se usa isinstance():
>>> edad = 25
>>> isinstance(edad, int)
True
>>> isinstance(edad, float)
False
>>> isinstance(3.14, (int, float)) # acepta una tupla de tipos
True
La ventaja frente a type(x) == int es que isinstance() también funciona con herencia de clases: si alguna vez trabajas con clases propias, se comporta de forma más coherente. En código cotidiano el resultado es el mismo, pero isinstance() es el estilo que verás en todos los proyectos Python.
Conversión de tipos (casting)
Como vimos en la lección de strings, Python es fuertemente tipado: no puedes sumar texto y números directamente. Puedes convertir tipos de forma explícita con las funciones de casting:
>>> edad = 25
>>> print("Tengo " + str(edad) + " años")
Tengo 25 años
>>> numero_texto = "100"
>>> print(int(numero_texto) + 50)
150
>>> print(float("3.14"))
3.14
>>> print(int(9.9)) # trunca los decimales, no redondea
9
Las funciones de casting son:
str(): convierte a cadena.int(): convierte a entero. Trunca los decimales si recibe un float; falla si el texto no es un número válido.float(): convierte a decimal.bool(): convierte a booleano. DevuelveFalsepara0,0.0,"",Noney colecciones vacías;Truepara cualquier otro valor.
>>> bool(0)
False
>>> bool(1)
True
>>> bool("")
False
>>> bool("hola")
True
>>> bool(None)
False
Nota: Este comportamiento de bool() (que ciertos valores cuenten como False) se llama falsy. Lo verás constantemente cuando el código evalúe condiciones con variables que podrían estar vacías o ser cero.
En la próxima lección: operadores de comparación (==, >, in...) y operadores lógicos (and, or, not).