Home / Lenguajes / Como convertir un string en int en Python metodos y ejemplos
Como convertir un string en int en Python metodos y ejemplos

Como convertir un string en int en Python metodos y ejemplos

10 October 2026 · 8 min de lectura ··

Introduccion a la conversion de strings a enteros en Python

La conversion de cadenas de texto a numeros enteros constituye una operacion fundamental en el desarrollo con Python. Los datos procedentes de entradas de usuario, archivos de texto, respuestas de API o bases de datos llegan con frecuencia como cadenas, incluso cuando representan cantidades, identificadores o contadores. Sin una conversion explicita, no es posible realizar operaciones aritmeticas ni almacenar los valores en estructuras que esperan tipos numericos.

Python proporciona la funcion incorporada int como mecanismo principal para esta transformacion. La funcion acepta una cadena que represente un entero valido y devuelve el valor correspondiente de tipo int. Cuando la cadena no cumple el formato esperado, se genera una excepcion ValueError que debe manejarse de forma explicita para mantener la estabilidad de la aplicacion. Ademas de la conversion directa, existen patrones para tratar cadenas con parte decimal, colecciones de cadenas y valores en bases distintas de la decimal.

Comprender estas tecnicas y sus casos limite permite escribir codigo que procesa datos externos de forma predecible. En esta guia se examinan los metodos disponibles, se ilustran con ejemplos concretos y se presentan recomendaciones para integrar las conversiones de manera segura y legible.

Variables y tipos de datos en Python

Python determina el tipo de una variable en el momento de la asignacion. Una cadena se crea al asignar un valor entre comillas, mientras que un entero se crea al asignar un numero sin comillas. Esta tipificacion dinamica simplifica la escritura de codigo, pero exige atencion cuando los datos cruzan fronteras entre sistemas que utilizan representaciones distintas.

Los tipos numericos principales son int para enteros de precision arbitraria y float para numeros de punto flotante. El tipo str representa secuencias de caracteres Unicode. La conversion entre str e int es explicita; Python no realiza esta transformacion de forma automatica en operaciones aritmeticas. Intentar sumar una cadena y un entero produce un TypeError, lo que refuerza la necesidad de convertir antes de calcular.

texto = "42"
print(type(texto))  # <class 'str'>

numero = 42
print(type(numero))  # <class 'int'>

Otros tipos como bool, list y dict tambien participan en conversiones, pero el foco de esta guia se mantiene en el paso de cadenas a enteros. Conocer la diferencia entre estos tipos ayuda a diagnosticar errores cuando una conversion falla o cuando un valor se interpreta de forma distinta a la esperada.

Uso de la funcion int para convertir strings

La forma mas directa de convertir una cadena a entero es invocar la funcion int. La cadena debe contener un literal entero valido, que puede incluir un signo opcional y digitos. Los espacios en blanco iniciales y finales se ignoran de forma automatica.

numero_str = "10"
numero_int = int(numero_str)
print(numero_int)        # 10
print(type(numero_int))  # <class 'int'>

Si la cadena contiene caracteres no numericos, la funcion genera ValueError. Este comportamiento es deseable porque evita interpretaciones ambiguas, pero requiere que el codigo que llama a int este preparado para capturar la excepcion cuando la entrada no esta garantizada.

try:
    numero_int = int("hola")
except ValueError:
    print("El string no es un numero valido")

La funcion int tambien acepta un segundo argumento que indica la base numerica. Este parametro permite interpretar cadenas en bases entre 2 y 36. Cuando se omite, se asume base 10. Especificar la base de forma explicita resulta util al procesar valores hexadecimales, binarios u octales.

binario = int("1010", 2)
print(binario)  # 10

hexadecimal = int("1A", 16)
print(hexadecimal)  # 26

La precision arbitraria de los enteros en Python permite convertir cadenas que representan numeros muy grandes sin perdida de informacion, siempre que la memoria disponible sea suficiente. Esta caracteristica diferencia a Python de lenguajes con enteros de tamano fijo y simplifica el manejo de identificadores o contadores de gran magnitud.

Conversion de strings con decimales a enteros

La funcion int no acepta cadenas que contienen un punto decimal. La expresion int(“3.14”) genera ValueError. Cuando se necesita obtener la parte entera de un valor decimal representado como cadena, el procedimiento consiste en convertir primero a float y despues a int. Esta secuencia trunca hacia cero, es decir, descarta la parte fraccionaria sin redondear.

numero_decimal = float("3.14")
numero_entero = int(numero_decimal)
print(numero_entero)  # 3

El mismo resultado se obtiene con numeros negativos: int(float("-3.9")) produce -3. Si se desea redondeo al entero mas cercano en lugar de truncamiento, se puede utilizar la funcion round antes de la conversion a int, o bien aplicar math.floor o math.ceil segun la direccion requerida.

Es importante distinguir entre truncamiento y redondeo porque la eleccion afecta el resultado en calculos financieros o de medicion. Cuando la precision decimal es relevante y no se desea perder informacion, resulta preferible mantener el valor como float o utilizar el tipo Decimal de la biblioteca estandar, que ofrece control explicito sobre el redondeo.

Conversion de listas de strings a listas de enteros

Cuando se dispone de una coleccion de cadenas que representan enteros, es posible convertir todos los elementos de forma eficiente. La funcion map aplica int a cada elemento de un iterable y devuelve un iterador que puede convertirse a lista.

numeros_str = ["10", "20", "30"]
numeros_int = list(map(int, numeros_str))
print(numeros_int)  # [10, 20, 30]

La comprension de listas ofrece una alternativa mas explicita y ampliamente preferida en codigo Python moderno. La sintaxis resulta legible y permite incorporar condiciones o transformaciones adicionales en la misma expresion.

numeros_str = ["10", "20", "30"]
numeros_int = [int(numero) for numero in numeros_str]
print(numeros_int)  # [10, 20, 30]

Ambos enfoques generan ValueError si algun elemento no es convertible. Para procesar listas que pueden contener valores invalidos, se puede combinar la comprension con una funcion auxiliar que capture la excepcion y devuelva un valor por defecto, o filtrar previamente los elementos validos.

def a_entero_seguro(valor):
    try:
        return int(valor)
    except ValueError:
        return None

datos = ["10", "abc", "30"]
resultado = [a_entero_seguro(x) for x in datos]
print(resultado)  # [10, None, 30]

La eleccion entre map y comprension de listas depende del estilo del proyecto. La comprension suele considerarse mas clara, mientras que map puede resultar conveniente cuando se reutiliza una funcion ya definida. En ambos casos, el rendimiento es adecuado para la mayoria de las aplicaciones; las diferencias solo se manifiestan con volumenes de datos muy elevados.

Manejo de errores en conversiones

El manejo de excepciones constituye la practica recomendada cuando la entrada no esta bajo control del programa. El bloque try captura ValueError y permite definir un comportamiento alternativo, como devolver un valor por defecto, registrar el error o solicitar una nueva entrada al usuario.

def convertir_a_int(valor):
    try:
        return int(valor)
    except ValueError:
        return None

resultado = convertir_a_int("abc")
if resultado is None:
    print("Conversion fallida")

Ademas de ValueError, int puede generar TypeError si el argumento no es una cadena ni un numero. Capturar ambas excepciones en una misma clausula except proporciona una proteccion mas completa cuando los datos pueden llegar en tipos inesperados.

def convertir_seguro(valor):
    try:
        return int(valor)
    except (ValueError, TypeError):
        return None

En bucles de entrada de usuario, es comun envolver la conversion en un ciclo que se repite hasta obtener un valor valido. Este patron garantiza que el programa no avance con datos incorrectos y ofrece retroalimentacion inmediata.

def solicitar_entero(mensaje):
    while True:
        entrada = input(mensaje)
        try:
            return int(entrada)
        except ValueError:
            print("Por favor, introduce un numero entero valido.")

La validacion previa con metodos de cadena, como isdigit, puede complementar el manejo de excepciones, pero no lo sustituye por completo. isdigit no acepta signos ni espacios, por lo que una cadena como “-10” devolveria False aunque sea convertible. La combinacion de limpieza con strip y la conversion dentro de try ofrece mayor flexibilidad.

Consideraciones avanzadas y buenas practicas

La validacion temprana de los datos reduce la cantidad de excepciones que se generan en tiempo de ejecucion. Cuando se conoce el formato esperado, una expresion regular o una comprobacion de caracteres puede filtrar entradas invalidas antes de invocar int. Sin embargo, la conversion misma sigue siendo la prueba definitiva de validez, porque cubre casos que las comprobaciones parciales pueden pasar por alto.

Crear funciones auxiliares reutilizables centraliza la logica de conversion y de manejo de errores. Estas funciones pueden aceptar un valor por defecto, registrar fallos o lanzar excepciones personalizadas segun las necesidades del proyecto. La reutilizacion mejora la consistencia y facilita las pruebas unitarias.

Para cadenas que representan numeros en notacion cientifica o con separadores de miles, puede ser necesario un preprocesamiento adicional antes de la conversion. La funcion float acepta notacion cientifica, por lo que una ruta posible consiste en convertir a float y despues a int cuando se desea truncar. En contextos financieros, el tipo Decimal evita los problemas de precision asociados a float.

El rendimiento de las conversiones individuales es elevado. Cuando se procesan millones de registros, la diferencia entre map y comprension de listas es minima en comparacion con el coste de entrada y salida. La eleccion debe priorizar la legibilidad y la facilidad de mantenimiento.

La documentacion del comportamiento esperado, incluyendo el tratamiento de valores invalidos y el truncamiento de decimales, ayuda a otros desarrolladores a utilizar las funciones de conversion de forma correcta. Incluir ejemplos en los docstrings y cubrir los casos limite en las pruebas automatizadas refuerza la robustez del codigo.

Conclusiones

La conversion de cadenas a enteros en Python se realiza de forma principal mediante la funcion int, que ofrece soporte para bases numericas distintas de la decimal y genera excepciones claras cuando la entrada no es valida. Para cadenas con parte decimal, la secuencia float seguida de int permite obtener la parte entera mediante truncamiento. Las listas de cadenas se convierten de manera eficiente con map o con comprensiones de listas.

El manejo explicito de ValueError y TypeError mediante bloques try except garantiza que las aplicaciones permanezcan estables ante datos externos imperfectos. Las funciones auxiliares que encapsulan esta logica promueven la reutilizacion y la consistencia. La atencion a los casos limite, como signos, espacios y bases no decimales, completa el conjunto de practicas necesarias para realizar conversiones fiables.

Dominar estas tecnicas permite procesar entradas de usuario, archivos y respuestas de servicios con confianza. La aplicacion sistematica de validacion y de manejo de errores contribuye a codigo mas mantenible y a aplicaciones que se comportan de forma predecible ante condiciones reales de uso.