Cómo comprobar si una cadena es un número en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo determinar si una cadena en Python representa un número. Comenzaremos definiendo varias cadenas, algunas de las cuales se asemejan a números, en un script de Python llamado numeric_strings.py. Este script imprimirá estas cadenas en la consola, preparando el terreno para el análisis posterior.

A continuación, exploraremos el método isdigit() para identificar cadenas que contengan solo dígitos, lo que indica enteros no negativos. Este método es crucial para validar datos y garantizar conversiones seguras a tipos numéricos.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/strings -.-> lab-559573{{"Cómo comprobar si una cadena es un número en Python"}} python/type_conversion -.-> lab-559573{{"Cómo comprobar si una cadena es un número en Python"}} python/build_in_functions -.-> lab-559573{{"Cómo comprobar si una cadena es un número en Python"}} python/catching_exceptions -.-> lab-559573{{"Cómo comprobar si una cadena es un número en Python"}} end

Definir Cadenas Numéricas

En este paso, exploraremos cómo Python maneja las cadenas que representan números. Estas se llaman "cadenas numéricas". Comprender cómo identificarlas y trabajar con ellas es crucial para la validación y manipulación de datos.

Una cadena numérica es simplemente una cadena que contiene solo caracteres que pueden interpretarse como un número. Esto puede ser un entero, un número de punto flotante o incluso un número en notación científica.

Comencemos creando un script de Python para examinar algunos ejemplos.

  1. En el editor de VS Code, crea un nuevo archivo llamado numeric_strings.py en tu directorio ~/project.

  2. Agrega el siguiente código al archivo numeric_strings.py:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Print the strings
print(f"String 1: {string1}")
print(f"String 2: {string2}")
print(f"String 3: {string3}")
print(f"String 4: {string4}")
print(f"String 5: {string5}")
print(f"String 6: {string6}")
print(f"String 7: {string7}")
print(f"String 8: {string8}")
  1. Guarda el archivo numeric_strings.py.

  2. Ahora, ejecuta el script desde la terminal:

python numeric_strings.py

Deberías ver la siguiente salida:

String 1: 123
String 2: 3.14
String 3: -42
String 4: 0
String 5:   56
String 6: abc
String 7: 123.45.67
String 8: 1e10

Como puedes ver, hemos definido varias cadenas, algunas de las cuales parecen números. En los siguientes pasos, aprenderemos cómo determinar cuáles de estas cadenas se pueden convertir de forma segura a tipos numéricos.

Usar isdigit() para Enteros

En este paso, aprenderemos cómo usar el método isdigit() para verificar si una cadena contiene solo dígitos y representa un entero no negativo. Este método es especialmente útil para validar la entrada del usuario o los datos leídos de archivos.

El método isdigit() es un método incorporado de cadenas en Python. Devuelve True si todos los caracteres de la cadena son dígitos y hay al menos un carácter, y False en caso contrario.

Modifiquemos nuestro script anterior para usar isdigit():

  1. Abre el archivo numeric_strings.py en el editor de VS Code.

  2. Modifica el código para incluir el método isdigit() de la siguiente manera:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Check if the strings are digits
print(f"String 1 '{string1}' isdigit(): {string1.isdigit()}")
print(f"String 2 '{string2}' isdigit(): {string2.isdigit()}")
print(f"String 3 '{string3}' isdigit(): {string3.isdigit()}")
print(f"String 4 '{string4}' isdigit(): {string4.isdigit()}")
print(f"String 5 '{string5}' isdigit(): {string5.isdigit()}")
print(f"String 6 '{string6}' isdigit(): {string6.isdigit()}")
print(f"String 7 '{string7}' isdigit(): {string7.isdigit()}")
print(f"String 8 '{string8}' isdigit(): {string8.isdigit()}")
  1. Guarda el archivo numeric_strings.py.

  2. Ejecuta el script desde la terminal:

python numeric_strings.py

Deberías ver la siguiente salida:

String 1 '123' isdigit(): True
String 2 '3.14' isdigit(): False
String 3 '-42' isdigit(): False
String 4 '0' isdigit(): True
String 5 '  56  ' isdigit(): False
String 6 'abc' isdigit(): False
String 7 '123.45.67' isdigit(): False
String 8 '1e10' isdigit(): False

Como puedes ver, isdigit() solo devuelve True para cadenas que contienen solo dígitos. Devuelve False para cadenas que contienen puntos decimales, signos negativos, espacios o cualquier carácter no numérico.

Este método es útil para verificar si una cadena se puede convertir de forma segura a un entero sin generar un error. Sin embargo, es importante recordar que isdigit() solo funciona para enteros no negativos. Para otros tipos numéricos, necesitaremos usar enfoques diferentes, como veremos en el siguiente paso.

Intentar Conversión con float()

En este paso, exploraremos cómo usar la función float() para convertir cadenas en números de punto flotante. Esto es útil cuando necesitas trabajar con números que tienen puntos decimales o están representados en notación científica.

La función float() es una función incorporada en Python que intenta convertir su argumento en un número de punto flotante. Si el argumento es una cadena, debe ser una representación válida de un número de punto flotante.

Modifiquemos nuevamente nuestro script para usar float() y ver cómo maneja diferentes cadenas:

  1. Abre el archivo numeric_strings.py en el editor de VS Code.

  2. Modifica el código para incluir la función float() y manejar posibles errores:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Try converting the strings to floats
strings = [string1, string2, string3, string4, string5, string6, string7, string8]

for s in strings:
    try:
        float_value = float(s)
        print(f"String '{s}' can be converted to float: {float_value}")
    except ValueError:
        print(f"String '{s}' cannot be converted to float")
  1. Guarda el archivo numeric_strings.py.

  2. Ejecuta el script desde la terminal:

python numeric_strings.py

Deberías ver la siguiente salida:

String '123' can be converted to float: 123.0
String '3.14' can be converted to float: 3.14
String '-42' can be converted to float: -42.0
String '0' can be converted to float: 0.0
String '  56  ' can be converted to float: 56.0
String 'abc' cannot be converted to float
String '123.45.67' cannot be converted to float
String '1e10' can be converted to float: 10000000000.0

Como puedes ver, float() puede convertir con éxito cadenas que representan enteros, números decimales y números en notación científica. También elimina automáticamente los espacios en blanco iniciales y finales (como se demuestra con string5). Sin embargo, genera un ValueError si la cadena no se puede interpretar como un número de punto flotante válido (como se demuestra con string6 y string7).

Usar bloques try-except nos permite manejar estos posibles errores de manera elegante y evitar que nuestro programa se bloquee. Esta es una práctica común e importante cuando se trabaja con entrada del usuario o datos de fuentes externas.

Resumen

En este laboratorio, comenzamos definiendo cadenas numéricas en Python, que son cadenas que contienen caracteres que se pueden interpretar como números (enteros, números de punto flotante, etc.). Creamos un script numeric_strings.py para definir e imprimir diversas cadenas, incluyendo enteros, decimales y cadenas con caracteres no numéricos, para ilustrar diferentes formatos de cadenas.

A continuación, comenzamos a explorar el método isdigit() para verificar si una cadena contiene solo dígitos, lo que indica un entero no negativo. El laboratorio está configurado para continuar demostrando cómo usar este método para validar cadenas.