Convertendo tipos de dados
Aprenda a transformar textos em números e números em textos quando necessário.
No dia a dia, muitas vezes precisamos transformar uma coisa em outra. Por exemplo:
- Transformar água em gelo.
- Transformar milho em pipoca.
- Transformar uma folha de papel em um barquinho de dobradura.
Na programação, essa transformação também acontece e é chamada de conversão de tipos (ou tecnicamente type casting). Ela serve para mudar o formato de uma informação para que o computador saiba exatamente o que fazer com ela.
Por que precisamos converter tipos?
Imagine a seguinte situação: você quer fazer um programa que pede a idade do usuário e soma mais 1 para saber quantos anos ele fará no ano que vem.
Quando o usuário digita no teclado, o Python lê essa informação sempre como string (na próxima lição veremos com ler dados do usuário). Ou seja, se ele digitar 15, o computador guardará "15" (com aspas).
Se você tentar fazer isso:
idade_texto = "15"
idade_ano_que_vem = idade_texto + 1
O Python vai dar um erro. Ele não sabe como somar um texto ("15") com um número comum (1). É como tentar somar a palavra "cadeira" com o número 5.
Para resolver isso, precisamos de um "tradutor" que pegue o texto "15" e o transforme no número inteiro 15.
Os tradutores do Python
O Python possui funções que servem como moldes ou transformadores de dados. As quatro principais são:
1. int() - O transformador para inteiro
Essa função recebe um texto ou um número decimal e tenta transformá-lo em um número inteiro (sem vírgula).
# Texto para Inteiro
texto = "20"
numero = int(texto) # Agora numero vale 20 (tipo int)
# Decimal para Inteiro (Atenção: ele joga fora o que vem após o ponto!)
altura = 1.75
altura_inteira = int(altura) # Agora vale 1 (tipo int)
[!NOTE] Ao converter um número decimal (
float) para inteiro (int), o Python não arredonda para cima. Ele simplesmente "corta" (ignora) todas as casas decimais. Entãoint(9.9)vira9!
2. float() - O transformador para decimal
Essa função pega um texto ou um número inteiro e o transforma em um número decimal (com ponto flutuante).
# Inteiro para Decimal
idade = 30
idade_float = float(idade) # Agora vale 30.0 (tipo float)
# Texto para Decimal
preco_texto = "4.99"
preco = float(preco_texto) # Agora vale 4.99 (tipo float)
quantidade_texto = "12"
quantidade = float(quantidade_texto) # Agora vale 12.0 (tipo float)
Lembrando que se a string representa um float, ela deve estar escrita corretamente (com ponto e não vírgula). O código abaixo retorna erro:
preco_texto = "4,99"
preco = float(preco_texto)
Se você executar o código, verá um erro do tipo ValueError: could not convert string to float: '4,99'
3. str() - O transformador para texto (string)
Essa função é a mais fácil e amigável: ela pega qualquer tipo de dado (seja número, decimal ou booleano) e o envolve em aspas, transformando-o em um texto.
numero = 100
texto = str(numero) # Agora vale "100" (tipo str)
ligado = True
texto_logico = str(ligado) # Agora vale "True" (tipo str)
4. bool() - O transformador para booleano
Essa função converte valores em verdadeiro (True) ou falso (False).
O Python tem uma regra simples para isso: quase tudo vira True, exceto aquilo que representa "vazio" ou "zero".
# Valores que viram False (vazios ou nulos)
print(bool(0)) # False
print(bool("")) # False (texto vazio)
print(bool(None)) # False (palavra reservada do Python que representa um objeto nulo)
# Valores que viram True
print(bool(42)) # True
print(bool("Olá")) # True
O perigo da conversão impossível! (O erro de valor)
Os transformadores do Python são muito inteligentes, mas eles não fazem milagres. Se você der a eles uma tarefa impossível, o programa vai parar e exibir um erro de valor (ValueError).
Imagine colocar um tijolo dentro de um espremedor de frutas:
# Isto causará um erro!
numero = int("abacaxi")
O Python vai dizer: "Eu não faço ideia de como transformar a palavra abacaxi em um número!" e parará a execução.
[!IMPORTANT] Antes de converter um texto em número, certifique-se de que o texto contém apenas caracteres numéricos (como
"123"ou"5.8").
O que aprendemos nesta lição
Nesta lição, você aprendeu que:
- Conversão de tipos (ou type casting) serve para transformar um tipo de dado em outro.
- A função
int()converte valores em números inteiros (e descarta a parte decimal de floats). - A função
float()converte valores em decimais. - A função
str()transforma qualquer dado em texto (string). - A função
bool()converte valores em True ou False (onde zero e textos vazios viram False). - Tentar converter textos não-numéricos em números gera um erro do tipo
ValueError.