Cómo convertir una cadena a Int en Python (conversión segura y bases)

Aprenda cómo convertir una cadena a un número entero en Python usando la función int(). Maneje los errores de forma segura y convierta números de binario, octal o hexadecimal.

Pruebe esta solución en el Editor

Descripción general

Convertir una representación de cadena de un número en un número entero real es una tarea frecuente en el desarrollo de aplicaciones. Este proceso, a menudo denominado conversión, es esencial cuando se trata de entradas sin procesar del usuario, lectura de archivos de configuración, análisis de argumentos de interfaces de línea de comandos o extracción de datos de la web. Dado que Python es un lenguaje fuertemente tipado, no se pueden realizar operaciones matemáticas en representaciones de cadenas de números sin convertirlas primero.

El constructor `int()` integrado de Python es la herramienta principal para esta conversión. En su forma más simple, pasar una cadena numérica (como `"42"`) a `int()` devuelve su equivalente entero. Sin embargo, pasar una cadena no numérica (como `"hello"`) o una cadena que represente un número de punto flotante (como `"3.14"`) generará un `ValueError`. Para escribir aplicaciones robustas, es una práctica estándar envolver las operaciones de conversión en un bloque "try-except" para manejar con elegancia las entradas inesperadas.

Más allá de la conversión estándar de base 10, la función `int()` acepta un argumento `base` opcional. Esto le permite analizar fácilmente cadenas que representan números en diferentes sistemas numéricos, como binario (base 2), octal (base 8) o hexadecimal (base 16). Por ejemplo, `int("1010", 2)` analiza correctamente la cadena binaria en el entero decimal `10`, lo que la convierte en una herramienta versátil para programación matemática especializada o de nivel inferior.

Código y salida de ejecución

Este script demuestra la conversión de una cadena a un número entero, el manejo de excepciones y la conversión de diferentes representaciones base.

# 1. Standard base-10 conversion
num_str = "123"
num = int(num_str)
print(f"Standard conversion: {num} (Type: {type(num).__name__})")

# 2. Handling invalid input gracefully
invalid_str = "abc"
try:
    result = int(invalid_str)
except ValueError:
    print(f"Could not convert '{invalid_str}' to an integer.")

# 3. Converting from different bases (binary and hex)
binary_str = "1011"
hex_str = "ff"
print("Binary '1011' to decimal:", int(binary_str, 2))
print("Hex 'ff' to decimal:", int(hex_str, 16))
Salida terminal
Standard conversion: 123 (Type: int)
Could not convert 'abc' to an integer.
Binary '1011' to decimal: 11
Hex 'ff' to decimal: 255

Implementación paso a paso

  • Pase la cadena numérica a la función int() incorporada.
  • Envuelva sus operaciones de conversión en try...excepto los bloques ValueError para manejar formatos no válidos.
  • Proporcione un segundo argumento (por ejemplo, base=16) para convertir valores de cadena escritos en otras bases.

Preguntas frecuentes

¿Cómo puedo convertir una cadena flotante como '12.34' en un número entero?

Primero debes convertirlo a flotante, luego a int: int(float("12.34")). Llamar a int("12.34") genera directamente un ValueError.

¿Cómo compruebo si una cadena se puede convertir de forma segura a un int?

Puede utilizar el método de cadena .isdigit(), pero tenga en cuenta que devuelve False para signos negativos o espacios en blanco. Un bloque try-except es la forma más sólida.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.