Convertir números en cadenas y cadenas en números en Python

Publicado el 25 enero 2021 por Daniel Rodríguez @analyticslane

Python ofrece múltiples posibilidades para convertir las cadenas de texto en números y viceversa. Una tarea que es bastante habitual por ejemplo cuando se interactúa con usuarios, ya que estos siempre usan cadenas de texto para comunicarse. Por eso vamos a ver en esta ocasión cómo se pueden convertir los números en cadenas de texto y las cadenas en números en Python. Aunque en primer lugar vamos a ver los tipos de datos numéricos que existen en Python.

Tipos de datos numéricos en Python

En Python existen cuatro tipos de datos numéricos: los enteros ( integer), los enteros largos ( long), los reales ( float) y los complejos ( complex).

Tanto los números enteros como los enteros largos se pueden usar para representar números sin decimales, tanto positivos como negativos. Permitiendo los enteros largos almacenar números más grandes que los enteros. Lo que se consigue a costa de ocupar más memoria, por lo que solamente se deben usar en caso de ser realmente necesarios.

Los números reales son aquellos que tienen decimales. Valores que se representan utilizando el estándar IEEE 754, por lo que equivale a los double de C u otros lenguajes. Pudiéndose representar valores que van aproximadamente desee 2e-308 hasta 2e308 con una precisión de 15 decimales.

Finalmente, los números complejos son aquellos con una parte imaginaria, que en Python se denota con una j. Para escribir un número complejo solamente tenemos que escribir dos números reales separados por el signo + o - y uno de ellos con una j.

Algunos ejemplos de números en Python son:

entero = 10
largo = 22L
real = 12.7
complejo = 10 + 12j

Convertir en cadenas de texto en Python

Las funciones que se pueden usar para convertir se llaman como los tipos de datos int(), float() y complex(). A estas funciones se le debe pasar una cadena de texto con un número válido. En caso de que la cadena contenga letras u otros símbolos que no se puedan interpretar como números, las funciones devolverán una excepción.

Uso de la función int()

La mejor forma de ver el funcionamiento de la función int() es con un ejemplo.

x = '22'
y = '12'
z = int(x) - int(y)

Lo que nos dará un número entero en z igual a 10.

En caso de que el valor pueda ser un número real es mejor usar la función real() o complex(). Ya que si la cadena contiene un valor que no sea entero esta nos devolverá un error. Por ejemplo:

int('12.0')
Traceback (most recent call last):
  File "", line 1, in  ValueError: invalid literal for int() with base 10: '12.0'

Otras bases

Una ventaja de la función int() es que los valores se pueden importar en bases diferentes a la decimal, como puede ser la binaria o la hexadecimal. Esto se pude conseguir simplemente indicando la base a la función mediante la propiedad base, por ejemplo, en el caso binario:

int('1101100', base=2)

Uso de la función float()

La función float() funciona de manera análoga a int(), pero en este caso también admiten valores reales con un punto. Aunque tampoco pude caracteres que no sean numéricos o el punto.

x = float('22')
y = float('22.1')
z = x - y

Lo que nos devolverá el número -0.10000000000000142. Algo que es habitual en los números reales donde siempre existe un pequeño error numérico.

Uso de la función complex()

Finalmente la función complex() funciona de manera análoga pero con números complejos. En donde las cadenas de texto pueden contener una j para indicar la parte compleja.

complex('1+3j')

Lo que nos devolverá el valor (1+3j).

Convertir números en cadenas de texto

Para convertir números en cadenas de texto se puede usar la función str() o utilizar interpolación mediante el método format() de las cadenas de texto. Con la ventaja de que en ambos casos se pueden convertir todos los tipos de números con los tres métodos.

Uso de la función str()

Esta es la función básica que nos permite convertir un número en una cadena de texto. Simple se le debe pasar un número como valor para convertirse en una cadena de texto. Por ejemplo, se puede usar para converitr

str(12)
str(23.2)
str(12 + 33j)

Interpolación con format()

Quizás esta sea la mejor opción para generar cadenas de texto con el valor numérico, ya que el valor se sitúa en la posición indicada. Simplemente en la cadena de texto deberemos situar {} y usar el método format() para asignar el valor.

'El saldo es {}'.format(123.21)
El saldo es 123.21

En caso de tener más de un valor se puede indicar los valores por posición, siendo 0 el primer valor que se pase a la función.

'El primer valor es {0} y el segundo {1}'.format(1, 2)
El primer valor es 1 y el segundo 2

Aunque también se le puede dar un nombre a cada una de las propiedades

'El primer valor es {primero} y el segundo {segundo}'.format(primero=10, segundo=20)
El primer valor es 10 y el segundo 20

Conclusiones

En esta ocasión hemos visto cómo se pueden convertir los números en cadenas de texto y las cadenas en números en Python. Una tarea sencilla, pero que requiere mostrar atención a ciertos detalles.

Imagen de Thorsten Frenzel en Pixabay