Como Verificar se uma String é um Número em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como determinar se uma string em Python representa um número. Começaremos definindo várias strings, algumas das quais se assemelham a números, em um script Python chamado numeric_strings.py. Este script imprimirá essas strings no console, preparando o terreno para a análise subsequente.

Em seguida, exploraremos o método isdigit() para identificar strings contendo apenas dígitos, indicando inteiros não negativos. Este método é crucial para validar dados e garantir conversões seguras para tipos numéricos.

Definir Strings Numéricas

Nesta etapa, exploraremos como o Python lida com strings que representam números. Estas são chamadas de "strings numéricas". Compreender como identificá-las e trabalhar com elas é crucial para a validação e manipulação de dados.

Uma string numérica é simplesmente uma string que contém apenas caracteres que podem ser interpretados como um número. Isso pode ser um inteiro, um número de ponto flutuante ou até mesmo um número em notação científica.

Vamos começar criando um script Python para examinar alguns exemplos.

  1. No editor VS Code, crie um novo arquivo chamado numeric_strings.py no seu diretório ~/project.

  2. Adicione o seguinte código ao arquivo 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. Salve o arquivo numeric_strings.py.

  2. Agora, execute o script a partir do terminal:

python numeric_strings.py

Você deve ver a seguinte saída:

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 você pode ver, definimos várias strings, algumas das quais se parecem com números. Nas etapas seguintes, aprenderemos como determinar quais dessas strings podem ser convertidas com segurança para tipos numéricos.

Usar isdigit() para Inteiros

Nesta etapa, aprenderemos como usar o método isdigit() para verificar se uma string contém apenas dígitos e representa um inteiro não negativo. Este método é particularmente útil para validar a entrada do usuário ou dados lidos de arquivos.

O método isdigit() é um método de string embutido no Python. Ele retorna True se todos os caracteres na string forem dígitos e houver pelo menos um caractere, e False caso contrário.

Vamos modificar nosso script anterior para usar isdigit():

  1. Abra o arquivo numeric_strings.py no editor VS Code.

  2. Modifique o código para incluir o método isdigit() da seguinte forma:

## 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. Salve o arquivo numeric_strings.py.

  2. Execute o script a partir do terminal:

python numeric_strings.py

Você deve ver a seguinte saída:

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 você pode ver, isdigit() retorna True apenas para strings que contêm apenas dígitos. Ele retorna False para strings contendo pontos decimais, sinais negativos, espaços ou quaisquer caracteres que não sejam dígitos.

Este método é útil para verificar se uma string pode ser convertida com segurança em um inteiro sem gerar um erro. No entanto, é importante lembrar que isdigit() funciona apenas para inteiros não negativos. Para outros tipos numéricos, precisaremos usar abordagens diferentes, como veremos na próxima etapa.

Tentar Conversão float()

Nesta etapa, exploraremos como usar a função float() para converter strings em números de ponto flutuante. Isso é útil quando você precisa trabalhar com números que possuem casas decimais ou são representados em notação científica.

A função float() é uma função embutida no Python que tenta converter seu argumento em um número de ponto flutuante. Se o argumento for uma string, ela deve ser uma representação válida de um número de ponto flutuante.

Vamos modificar nosso script novamente para usar float() e ver como ele lida com diferentes strings:

  1. Abra o arquivo numeric_strings.py no editor VS Code.

  2. Modifique o código para incluir a função float() e lidar com possíveis erros:

## 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. Salve o arquivo numeric_strings.py.

  2. Execute o script a partir do terminal:

python numeric_strings.py

Você deve ver a seguinte saída:

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 você pode ver, float() pode converter com sucesso strings que representam inteiros, números decimais e números em notação científica. Ele também remove automaticamente espaços em branco no início e no final (como demonstrado por string5). No entanto, ele levanta um ValueError se a string não puder ser interpretada como um número de ponto flutuante válido (como demonstrado por string6 e string7).

Usar blocos try-except nos permite lidar com esses possíveis erros de forma elegante e evitar que nosso programa trave. Esta é uma prática comum e importante ao trabalhar com entrada do usuário ou dados de fontes externas.

Resumo

Neste laboratório, começamos definindo strings numéricas em Python, que são strings contendo caracteres que podem ser interpretados como números (inteiros, floats, etc.). Criamos um script numeric_strings.py para definir e imprimir várias strings, incluindo inteiros, decimais e strings com caracteres não numéricos, para ilustrar diferentes formatos de string.

Em seguida, começamos a explorar o método isdigit() para verificar se uma string contém apenas dígitos, indicando um inteiro não negativo. O laboratório está configurado para continuar demonstrando como usar este método para validar strings.