Conversão de tipos em Python: como converter tipos de dados
Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução
Imagine que você pergunta a idade de alguém e a pessoa escreve a resposta em um post-it. Agora você tem o texto "25", mas não dá para fazer contas com um post-it. Primeiro você precisa ler o texto e transformá-lo, na sua cabeça, em um número de verdade.
O Python funciona do mesmo jeito. Muitas vezes os dados chegam em um tipo, mas precisam estar em outro. Um usuário digita "42" em um formulário: isso é uma string, não um número. Antes de somar, subtrair ou comparar esse valor, você precisa convertê-lo.
Este tutorial ensina a converter entre os tipos de dados do Python com segurança e confiança. Você vai aprender quais conversões acontecem automaticamente, quais você precisa fazer por conta própria e como evitar os erros que pegam os iniciantes.
O que é conversão de tipos em Python?
Conversão de tipos significa mudar um valor de um tipo de dado para outro. Por exemplo, transformar a string "42" no número inteiro 42, ou transformar o inteiro 10 no float 10.0.
O Python tem dois tipos de conversão. A conversão implícita acontece automaticamente: o Python faz isso por você, nos bastidores. A conversão explícita é quando você usa uma função como int() ou str() para converter um valor por conta própria.
Pense na conversão implícita como o corretor automático do celular trocando uma palavra. A conversão explícita é como editar a palavra você mesmo, à mão. As duas resolvem, mas o jeito manual dá mais controle.
7.0 <class 'float'> 30
Como funciona a conversão implícita de tipos em Python
Quando você mistura um inteiro e um float em uma operação matemática, o Python converte automaticamente o inteiro em float. Isso se chama conversão implícita (ou coerção de tipos). O Python sempre converte para o tipo "mais amplo", para que nenhum dado se perca.
É como despejar a água de um copo pequeno em um balde grande. A água (seus dados) continua a mesma: só passa a ficar em um recipiente maior. Ir de int para float é seguro para os números do dia a dia: um float representa exatamente todo inteiro até cerca de 9 quatrilhões.
7.0 15.0 5.0 6 10 3.5
7.0 Error: can only concatenate str (not "int") to str
Como converter para inteiro com int()
A função int() converte um valor em número inteiro. Você pode converter floats, strings e booleanos. Cada tipo se comporta de um jeito um pouco diferente.
Convertendo floats em inteiros
Quando você converte um float em inteiro, o Python trunca: corta tudo o que vem depois do ponto decimal. Ele não arredonda. Pense em cortar uma corda: o que passa da marca cai fora.
3 3 -2 99 4 3
Convertendo strings em inteiros
Você só pode converter uma string em inteiro se ela contiver um número inteiro válido. Espaços em volta do número não atrapalham, mas pontos decimais ou letras causam erro.
42 -7 100 1 0
Como converter para float com float()
A função float() converte um valor em número de ponto flutuante. Ela aceita inteiros, strings e booleanos.
Converter em float um inteiro do dia a dia não perde nada: o número ganha um .0 no final, como um preço de R$ 5 escrito como R$ 5,00. Só um inteiro acima do limite citado antes (2 ** 53) pode perder seus últimos dígitos.
42.0 -7.0 0.0 3.14 7.0 -2.5 1.0 0.0
Como converter para string com str()
A função str() converte qualquer valor na sua representação em string. É a função de conversão mais tolerante: funciona com quase tudo.
Você vai usar str() principalmente ao montar mensagens que misturam texto e números. O Python não deixa você juntar uma string e um número com +, então primeiro você converte o número em string.
42 3.14 -7 True False None I am 25 years old
name = "Alice"
age = 25
print("Name: " + name + ", Age: " + str(age))name = "Alice"
age = 25
print(f"Name: {name}, Age: {age}")Como converter para booleano com bool()
A função bool() converte um valor em True ou False. A regra é direta: valores vazios e zero viram False, todo o resto vira True.
Pense nisso como perguntar "tem alguma coisa aqui?". Uma caixa vazia é False. Uma caixa com qualquer coisa dentro, mesmo que seja só um papel amassado, é True.
False False False False --- True True True True True
True True True True False
Erros comuns de conversão de tipos em Python
Nem toda conversão é possível. Quando o Python não consegue converter um valor, ele gera um ValueError. Esse é o erro mais comum que os iniciantes encontram ao trabalhar com conversão de tipos.
É como tentar traduzir uma palavra que não existe no outro idioma. O Python olha o valor, tenta convertê-lo e diz: "não faço ideia de como transformar isso em número".
Error 1: invalid literal for int() with base 10: 'hello' Error 2: invalid literal for int() with base 10: '3.14' Error 3: could not convert string to float: 'abc'
Aqui vai uma referência rápida do que funciona e do que não funciona:
| Conversão | Exemplo | Resultado |
|---|---|---|
int("42") | String de dígitos | 42 |
int("3.14") | String com casas decimais | ValueError |
int("hello") | String não numérica | ValueError |
float("3.14") | String com casas decimais | 3.14 |
float("abc") | String não numérica | ValueError |
int(float("3.14")) | Conversão em dois passos | 3 |
Como converter tipos com segurança em Python
Em programas reais, você costuma receber dados de usuários ou de arquivos. Nem sempre dá para confiar que esses dados são um número válido. Se você chamar int() direto em uma entrada inválida, o programa quebra.
O Python oferece duas formas de lidar com isso. Você pode verificar antes de converter, com métodos como .isdigit(), ou pode tentar e capturar o erro com try/except, a mais segura das duas.
Verificando antes com .isdigit()
O método .isdigit() retorna True se todos os caracteres de uma string forem dígitos. É um jeito rápido de verificar uma string antes de convertê-la em inteiro.
True False False False False Converted: 42
Usando try/except para uma conversão segura
O padrão try/except é a forma mais flexível de lidar com conversões. Você tenta fazer a conversão e, se ela falhar, captura o erro e faz outra coisa. Você vai aprender try/except a fundo mais adiante; por enquanto, aqui está o padrão básico.
42 100 None None None
Exercícios práticos
Hora de colocar suas habilidades de conversão de tipos à prova. Estes exercícios começam tranquilos e vão ficando mais difíceis. Tente resolver cada um antes de olhar as dicas.
Você tem uma variável string text que contém "42". Converta-a em inteiro e multiplique por 2. Exiba o resultado.
Saída esperada:
84Você tem um float price = 9.99. Converta-o em inteiro e exiba o valor original e o convertido, para mostrar o que se perde.
Saída esperada:
Original: 9.99
Converted: 9
Lost: 0.99Dica: calcule o que se perdeu fazendo uma subtração. Use round() na parte perdida para evitar as esquisitices do ponto flutuante.
Sem executar o código, preveja o que cada linha vai exibir. Escreva suas previsões como comentários e depois execute para conferir.
Pense com cuidado no truncamento, na conversão para string e nas regras de truthy e falsy.
Este código tenta montar uma mensagem, mas quebra com um TypeError. Corrija-o para que ele exiba:
You have 3 new messagesVocê pode corrigir do jeito que preferir (str(), f-strings etc.).
Escreva um código que verifique três strings com .isdigit() e converta em inteiros apenas as que são formadas por dígitos. Para cada string, exiba o número convertido ou "Not a number".
Dado:
values = ["42", "hello", "100"]Saída esperada:
42
Not a number
100Resumo: conversão de tipos em Python
Aqui está tudo o que você aprendeu sobre conversão de tipos:
| Função | O que faz | Exemplo |
|---|---|---|
int() | Converte em inteiro (trunca floats) | int("42") → 42 |
float() | Converte em float | float("3.14") → 3.14 |
str() | Converte em string | str(42) → "42" |
bool() | Converte em booleano | bool(0) → False |
Regras principais para lembrar:
bool → int → float)int() trunca: não arredonda. Use round() para arredondarint("3.14") dá erro: converta antes com float(), como em int(float("3.14"))try/except para converter entradas com segurança; .isdigit() é uma primeira verificação rápida para números inteiros simplesO que vem a seguir?
Agora que você sabe converter entre tipos de dados, tem uma habilidade essencial para processar a entrada do usuário e criar programas de verdade. No próximo tutorial, você vai aprender a escrever código Python limpo e legível, que outros desenvolvedores (e você mesmo no futuro) vão agradecer.