Convertir variables de un tipo a otro se denomina casting. En Python podemos comprobar el tipo de una variable mediante la función type(), o bien mediante la función isInstance(), como se muestra a continuación
a = 2.0
b = 2
print(type(a))
print(type(b))
<class 'float'>
<class 'int'>
print(isinstance(a, float))
print(isinstance(a, int))
print(isinstance(b, float))
print(isinstance(b, int))
True
False
False
True
Podemos cambiar el tipo de variable mediante las funciones int(), float(), complex() y str(), como se aprecia a continuación
print(int(18.6))
print(float(1))
print(complex(2))
print(str(256))
print(int('1234'))
18
1.0
(2+0j)
256
1234
Pero como todos los cambios anteriores se ejecutan inmediatamente, los datos no se almacenan en ninguna variable, por lo que después no podemos comprobar si el cambio de tipo fue el correcto con la función type(). Vamos a hacerlo un poco mejor:
cadena_texto = "12345"
print("Cadena original: ")
print(cadena_texto)
print("Tipo: ")
print(type(cadena_texto))
Cadena original:
12345
Tipo:
<class 'str'>
cadena_num = int(cadena_texto)
print("Cadena con tipo modificado: ")
print(cadena_num)
print("Tipo: ")
print(type(cadena_num))
Cadena con tipo modificado:
12345
Tipo:
<class 'int'>
Si intentamos realizar un casting de una variable del tipo texto (string) a un entero, solo funcionará si la cadena de caracteres, en su interior, contiene caracteres que se pueden transformar a números, en el momento en el que existan caracteres del tipo letra, nos dará error:
cadena_texto = "123abc"
cadena_num = int(cadena_texto)
ValueError: invalid literal for int() with base 10: '123abc'
Otras funciones que nos pueden ayudar bastante en la conversión y manejo de números son:
Veamos uno ejemplos:
print(round(18.6))
print(max(1, 5, 9, 7))
print(min(-1, 1, 0))
19
8
-1