[Go to site: main page, start]

Pular para o conteúdo principal

Conversão de tipos de dados em Python: guia com exemplos

Neste tutorial de Python, você vai explorar conversões implícitas e explícitas de tipos de dados, tanto em estruturas primitivas quanto não primitivas, com a ajuda de exemplos de código!
Atualizado 22 de jul. de 2026  · 14 min lido

Explorar com IA

Abrir no ChatGPTAbrir no ClaudeAbrir no Perplexity

Todo valor em Python tem um tipo de dado. Tipos de dados são uma classificação que informa ao compilador ou interpretador como você quer usar o dado. O tipo define as operações possíveis e a estrutura em que o dado será armazenado. Em ciência de dados, você vai frequentemente precisar mudar o tipo dos seus dados para facilitar o uso e a manipulação.

Python tem muitos tipos de dados. Você provavelmente já viu e trabalhou com alguns deles. Há inteiros e floats para lidar com valores numéricos, booleanos (bool) para trabalhar com verdadeiro/falso e strings para caracteres alfanuméricos. Você também pode usar listas, tuplas, dicionários e conjuntos, que são estruturas de dados onde é possível armazenar coleções de valores. Para saber mais, confira o curso Data Types in Python da DataCamp.

Para executar facilmente todo o código de exemplo deste tutorial por conta própria, você pode criar um workbook no DataLab gratuitamente, já com Python pré-instalado e contendo todas as amostras de código.

Verificando tipos de dados em Python

Antes de converter tipos de dados, é útil checá-los. Python oferece duas funções principais:

  • type(): retorna o tipo de uma variável.
  • isinstance(): verifica se uma variável pertence a um determinado tipo.
a = 5.5
print(type(a))  # Output: <class 'float'>

print(isinstance(a, int))  # Output: False
print(isinstance(a, float))  # Output: True

Conversão implícita e explícita de tipos de dados em Python

A conversão de dados em Python pode acontecer de duas formas: ou você diz explicitamente ao compilador para converter um tipo em outro, ou o próprio compilador entende a necessidade e faz isso para você. No primeiro caso, você está realizando uma conversão de tipo explícita; no segundo, é uma conversão de tipo implícita.

Conversão implícita de tipos em Python

Conversão implícita, ou coerção, ocorre quando a conversão de tipo acontece durante a compilação ou em tempo de execução e é tratada automaticamente pelo Python. Veja um exemplo:

a_int = 1
b_float = 1.0
c_sum = a_int + b_float
print(c_sum)
print(type(c_sum))
 2.0
<class 'float'>

Dica: você pode usar a função type() em Python para verificar o tipo de dado de um objeto.

Aprenda Python do zero

Domine o Python para a ciência de dados e adquira habilidades que estão em alta.
Comece a Aprender De Graça

No exemplo, um valor inteiro a_int foi somado a um valor float b_float, e o resultado foi automaticamente convertido para um float c_sum sem que você precisasse instruir o compilador. Isso é conversão implícita.

Por que o valor float não foi convertido para inteiro em vez disso?

Isso se deve a um conceito mais amplo de promoção de tipo na ciência da computação. Em resumo, é um mecanismo de defesa do compilador que permite executar operações sempre que possível, convertendo seus dados para um supertipo diferente sem perder informação.

Ou seja, a conversão de float para inteiro não é feita porque o compilador teria que remover a parte fracionária, levando à perda de informação.

Conversão explícita de tipos em Python

A conversão explícita de tipos, também chamada de type casting, ocorre quando você converte deliberadamente um valor de um tipo para outro. Essa abordagem dá controle direto sobre a conversão, pois você especifica explicitamente o tipo de destino no código. Ela é comum quando a conversão automática (implícita) do Python não atende ao que você precisa.

A sintaxe para a conversão explícita é:

target_data_type(expression)

Por exemplo, se você quiser converter um número de ponto flutuante para inteiro, escreva:

int(3.14)  # Converts 3.14 to 3

Atenção: embora conversões explícitas sejam muito úteis, elas podem causar perda de informação. Por exemplo, converter um número de ponto flutuante para inteiro descarta a parte fracionária. É importante entender essas consequências para evitar resultados indesejados nos seus programas.

Vamos explorar algumas conversões explícitas comuns.

Estruturas de dados primitivas versus não primitivas em Python

Estruturas de dados primitivas são os blocos básicos de manipulação de dados e contêm valores simples e puros. Python tem quatro tipos primitivos de variáveis:

  • Inteiros
  • Float
  • Strings
  • Booleano

Estruturas de dados não primitivas não armazenam apenas um valor, mas sim uma coleção de valores em vários formatos. Em Python, você tem as seguintes estruturas de dados não primitivas:

  • Listas
  • Tuplas
  • Dicionários
  • Sets

Você pode aprender mais sobre elas no tutorial Data Structures in Python da DataCamp.

Conversões em estruturas de dados primitivas

Conversões entre inteiro e float em Python

Inteiros e floats são tipos de dados numéricos.

Para converter um inteiro em float, use a função float() em Python. Da mesma forma, se quiser converter um float em inteiro, use a função int().

a_int = 3
b_int = 2

# Conversão explícita de int para float
c_float_sum = float(a_int + b_int)
print(c_float_sum)
5.0
a_float = 3.3
b_float = 2.0
# Conversão explícita de float para int
c_int_sum = int(a_float + b_float)
print(c_int_sum)

c_float_sum = a_float + b_float
print(c_float_sum)
5
5.3

Problemas de precisão com float e o módulo Decimal

A aritmética de ponto flutuante em Python pode levar a problemas de precisão:

print(0.1 + 0.2)  # Output: 0.30000000000000004

Para evitar isso, use o módulo Decimal:

from decimal import Decimal

print(Decimal('0.1') + Decimal('0.2'))  # Output: 0.3

Conversão de número real para complexo em Python

Você pode converter inteiros em números complexos usando complex(real,imag). Ela recebe dois inteiros (partes real e imaginária) e converte números reais em complexos.

real = 2
imag = 5
print(complex(real, imag))
(2+5j)

Conversão de tipos com strings em Python

Uma string é uma coleção de um ou mais caracteres (letras, números, símbolos). Com frequência você vai precisar converter strings em números ou números em strings.

price_cake = 15
price_cookie = 6
total = price_cake + price_cookie
print("The total is: " + total  + "$")

 
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-12-54bd76b9b4bd> in <module>()
      2 price_cookie = 6
      3 total = price_cake + price_cookie
----> 4 print("The total is: " + total  + "$")


TypeError: Can't convert 'int' object to str implicitly

O exemplo acima gera um TypeError, informando que o compilador não pode converter implicitamente um inteiro em string.

O que o programa deveria fazer aqui pode parecer intuitivo para você. Porém, o compilador nem sempre tem certeza, então ele oferece um mecanismo de conversão explícita para que você diga claramente o que quer. Veja como converter um inteiro em string em Python usando a função str():

price_cake = 15
price_cookie = 6
total = price_cake + price_cookie
print("The total is: " + str(total)  + "$")
The total is: 21$

Funciona do mesmo jeito ao converter float para string.

Em Python, você também pode converter strings em valores inteiros e float sempre que possível. Vamos ver o que isso significa:

price_cake = '15'
price_cookie = '6'

# Concatenação de strings
total = price_cake + price_cookie
print("The total is: " + total + "$")

# Conversão explícita para inteiro
total = int(price_cake) + int(price_cookie)
print("The total is: " + str(total)  + "$")
The total is: 156$
The total is: 21$

Vamos destrinchar o código.

price_cake e price_cookie são inicialmente strings. Depois, você precisa encontrar o total, o que significa que primeiro devem ser convertidas para seus valores inteiros correspondentes. Caso contrário, o compilador vai assumir que a operação desejada é a concatenação de strings, não a soma numérica. Em seguida, você inclui esse valor na mensagem final e, consequentemente, precisa converter o total para string para concatená-lo ao restante do texto.

Com sorte, este exemplo ajuda você a ver a importância das conversões de tipo. Mesmo sendo um caso simples, já dá para notar o quanto isso é útil.

Observação: reparou no "sempre que possível" ao converter uma string para inteiro ou float? Isso porque nem sempre é possível converter strings em números e aplicar operações numéricas. O compilador sabe disso e, portanto, vai gerar um erro quando você tentar. Veja o exemplo abaixo:

price_cake = 'fifteen'
price_cookie = 'six'
total = int(price_cake) + int(price_cookie)
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-25-80591b8accda> in <module>()
      1 price_cake = 'fifteen'
      2 price_cookie = 'six'
----> 3 total = int(price_cake) + int(price_cookie)


ValueError: invalid literal for int() with base 10: 'fifteen'

Resumo: conversões de tipos de dados primitivos em Python

Conversão Função Exemplo Saída
Inteiro para float float() float(3) 3.0
Float para inteiro int() int(3.9) 3
String para inteiro int() int('123') 123
Inteiro para string str() str(123) '123'

Conversões em estruturas de dados não primitivas

Conversão para tuplas e listas em Python

Assim como com inteiros e floats, você também pode converter listas em tuplas e tuplas em listas.

Lembra o que são tuplas e listas? Listas e tuplas em Python são usadas para armazenar coleções de itens homogêneos. A diferença é que tuplas são imutáveis: uma vez definidas, você não pode apagar, adicionar ou editar valores dentro delas.

Por que converter listas em tuplas?

Porque tuplas são imutáveis e permitem otimizações importantes nos programas que você cria.

E por que converter tuplas em listas?

Talvez você queira fazer mudanças na tupla original. Assim, você pode convertê-la em lista, fazer as alterações e depois converter de volta em tupla.

Em Python, use a função tuple() para retornar uma versão em tupla do valor passado e, de forma semelhante, list() para converter uma tupla em lista:

a_tuple = ('a', 1) ,('f', 2), ('g', 3)
b_list = [1,2,3,4,5]

print(tuple(b_list))
print(list(a_tuple))
(1, 2, 3, 4, 5)
[('a', 1), ('f', 2), ('g', 3)]

Da mesma forma, veja como converter uma string em lista ou tupla em Python:

dessert = 'Cake'

# Converter os caracteres de uma string em itens individuais de uma tupla
print(tuple(dessert))

# Converter uma string em lista
dessert_list = list(dessert)
dessert_list.append('s')
print(dessert_list)
('C', 'a', 'k', 'e')
['C', 'a', 'k', 'e', 's']

Conversão para dicionários e sets em Python

Você pode usar dict() para converter uma tupla em dicionário e set() para converter uma lista em set. 

print(dict(a_tuple))
print(set(b_list))
{'a': 1, 'f': 2, 'g': 3}
{1, 2, 3, 4, 5}

Semelhante a outras funções de conversão, basta fornecer o nome da função para converter qualquer tipo de dado em dicionários e sets.

Usando dataclasses para dados estruturados (Python 3.7+)

Em vez de usar dicionários ou tuplas, dataclasses oferecem uma forma melhor de lidar com dados estruturados.

from dataclasses import dataclass

@dataclass
class Product:
    name: str
    price: float
    in_stock: bool

item = Product("Laptop", 799.99, True)
print(item)  # Output: Product(name='Laptop', price=799.99, in_stock=True)

Resumo: conversões em estruturas de dados não primitivas em Python

Conversão Função Exemplo Saída
Lista para tupla tuple() tuple([1, 2, 3]) (1, 2, 3)
Tupla para lista list() list(('a', 1)) ['a', 1]
String para lista list() list('Cake') ['C', 'a', 'k', 'e']
String para tupla tuple() tuple('Cake') ('C', 'a', 'k', 'e')
Tupla para dicionário dict() dict((('a', 1), ('b', 2))) {'a': 1, 'b': 2}
Lista para set set() set([1, 2, 3, 4, 5]) {1, 2, 3, 4, 5}

Unicode, binário, octal e hexadecimal em Python

Sistemas numéricos se referem ao conjunto de símbolos ou caracteres usados para representar valores numéricos. O sistema que você usa no dia a dia é o decimal. No sistema decimal, usamos dez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Com esses dez símbolos, é possível representar qualquer quantidade. Unicode, binário, hexadecimal e octal se referem a diferentes sistemas numéricos.

Você passa para a próxima casa quando os símbolos acabam. No decimal, para representar um a mais que 9, usamos 10, que significa uma unidade de dez e zero unidades de um. Em outros sistemas é diferente. Por exemplo, no sistema binário, que usa apenas 0 e 1, você precisa ir para a próxima casa quando os símbolos acabam. A contagem fica: 0, 1, 10, 11, 100, 101, etc.

Vamos ver alguns desses sistemas com mais detalhes nas próximas seções.

Converter binário para decimal em Python

Números binários são representados na base dois. Ou seja, apenas dois símbolos são usados: 0 e 1. Ao contar a partir de zero em binário, os símbolos acabam mais rápido: 0, 1, ???

Não há mais símbolos disponíveis. Você não vai para o dígito 2, pois 2 não existe em binário. Em vez disso, usa combinações de 1s e 0s. Em binário, 1000 é igual a 8 no decimal. No binário, você usa potências de dois, então 8 é basicamente: (1(2^3)) + (0(2^2)) + (0(2^1)) + (0(2^0)) = 8. A posição de 1 e 0 define a potência a que o 2 é elevado.

Veja um exemplo mais complexo para ficar claro:

Binary Number = 1001111
Decimal value = (1*(2^6)) + (0*(2^5)) + (0*(2^4)) + (1*(2^3)) + (1*(2^2)) + (1*(2^1)) + (1*(2^0))
              = 79

Em Python, você pode simplesmente usar a função bin() para converter um valor decimal para seu correspondente binário.

Da mesma forma, use int() para converter um binário em decimal. A função int() recebe como segundo argumento a base do número a ser convertido, que é 2 no caso de binário.

a = 79

# Base 2 (binário)
bin_a = bin(a)
print(bin_a)
print(int(bin_a, 2)) # Base 2 (binário)
0b1001111
79

Converter octal para decimal em Python

Octal é outro sistema com menos símbolos que o decimal. É base oito, o que significa que oito símbolos representam todas as quantidades: 0, 1, 2, 3, 4, 5, 6 e 7. Depois do 7 vem 10, já que 8 não existe.

Assim como você usou potências de dois no binário para determinar o valor, aqui você usará potências de 8 por ser base oito.

No sistema octal, 10 é igual a 8 no decimal. Detalhando: (1(8^1)) + (0(8^0)) = 8.

Um exemplo mais complexo:

Octal Number = 117
Decimal value = (1*(8^2)) + (1*(8^1)) + (7*(8^0))
              = 79

Em Python, você pode usar a função oct() para converter um valor decimal para seu correspondente octal. Alternativamente, use int() com a base correta, que é 8 no sistema octal.

a = 79

# Base 8 (octal)
oct_a = oct(a)
print(oct_a)
print(int(oct_a, 8))
0o117
79

Converter hexadecimal para decimal em Python

Hexadecimal é um sistema de base 16. Diferente de binário e octal, ele usa seis símbolos adicionais além dos números do sistema decimal.

Mas o que vem depois do 9?

Quando são necessários símbolos além dos valores numéricos, usam-se letras. Assim, em hexadecimal, a lista de símbolos é 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F.

Usando o mesmo exemplo de antes:

Hexadecimal Number = 4F
Decimal value = (4*(16^1)) + (F*(16^0))
              = 79

Em Python, você pode usar a função hex() para converter um valor decimal em seu correspondente hexadecimal, ou int() com base 16 para o sistema hexadecimal.

a = 79

# Base 16 (hexadecimal)
hex_a = hex(a)
print(hex_a)
print(int(hex_a, 16))
0x4f
79

Converter Unicode em caractere

Python chr() converte inteiros Unicode em string. Unicode é uma codificação de caracteres universalmente aceita para exibir textos escritos de diversos idiomas.

Fornecemos vários inteiros Unicode para a função chr() para exibir “DATACAMP”. Você também pode usar ord() para converter um único caractere em um inteiro Unicode. 

print(
    chr(68),
    chr(65),
    chr(84),
    chr(65),
    chr(67),
    chr(65),
    chr(77),
    chr(80),
)
D A T A C A M P

Resumo: conversões entre sistemas numéricos em Python

Conversão Função Exemplo Saída
Decimal para binário bin() bin(79) 0b1001111
Binário para decimal int() int('1001111', 2) 79
Decimal para octal oct() oct(79) 0o117
Octal para decimal int() int('117', 8) 79
Decimal para hex hex() hex(79) 0x4f
Hex para decimal int() int('4F', 16) 79
Unicode para caractere chr() chr(68) 'D'
Caractere para Unicode ord() ord('D') 68

Você chegou ao fim!

Parabéns! Você aprendeu sobre conversões de tipos de dados em Python, principalmente usando métodos nativos. Isso com certeza vai ajudar você a lidar com diferentes tipos de dados, dando mais flexibilidade na hora de escrever seus programas.

Temos um excelente curso de Intermediate Python for Data Science no qual você vai aprender a plotar dados com matplotlib e trabalhar com dicionários e o famoso DataFrame do pandas. Você também verá como controlar o fluxo do programa com laços. No fim do curso há um estudo de caso para aplicar tudo o que aprendeu e colocar o conhecimento em prática! 

Projetos Python para todos os níveis

Aprimore suas habilidades em Python com projetos de dados do mundo real.

FAQs

Como converter uma lista de inteiros em uma única string em Python?

Você pode usar o método join() combinado com map() para converter cada inteiro em string e concatená-los.

int_list = [1, 2, 3, 4]
result = ''.join(map(str, int_list))
print(result)  # Output: '1234'
O que acontece se você tentar converter uma string não numérica em inteiro em Python?

Um ValueError será gerado indicando que a string não é um inteiro válido.

int('abc')  # Raises ValueError: invalid literal for int() with base 10: 'abc'
É possível converter um set em lista em Python? Como?

Sim, você pode converter um set em lista usando a função list().

a_set = {1, 2, 3}
a_list = list(a_set)
print(a_list)  # Output: [1, 2, 3]
Como converter uma string com números separados por espaço em uma lista de inteiros?

Use o método split() para dividir a string e map() para converter cada parte em inteiro.

numbers = "1 2 3 4"
int_list = list(map(int, numbers.split()))
print(int_list)  # Output: [1, 2, 3, 4]
Que função você pode usar para verificar o tipo de dado de uma variável em Python?

Você pode usar a função type() para verificar o tipo de dado de uma variável.

x = 5
print(type(x))  # Output: <class 'int'>

Sejal Jaiswal's photo
Author
Sejal Jaiswal
LinkedIn

Eu uso vários chapéus: Desenvolvedor de software, programador, cientista de dados, desenvolvedor de business intelligence, proprietário de produto

Tópicos

Aprenda mais sobre Python com estes cursos!

Curso

Introdução ao Python

4 h
6.9M
Domine os fundamentos da análise de dados com Python em quatro horas e explore pacotes populares.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial de estruturas de dados Python

Introdução às estruturas de dados do Python: saiba mais sobre tipos de dados e estruturas de dados primitivas e não primitivas, como strings, listas, pilhas etc.
Sejal Jaiswal's photo

Sejal Jaiswal

Tutorial

Operadores em Python

Este tutorial aborda os diferentes tipos de operadores em Python, sobrecarga de operadores, precedência e associatividade.
Théo Vanderheyden's photo

Théo Vanderheyden

Tutorial

Python JSON Data: Um guia com exemplos

Aprenda a trabalhar com JSON em Python, incluindo serialização, deserialização, formatação, otimização de desempenho, manipulação de APIs e compreensão das limitações e alternativas do JSON.
Moez Ali's photo

Moez Ali

Tutorial

Tutorial e exemplos de funções e métodos de listas Python

Aprenda sobre as funções e métodos da lista Python. Siga agora os exemplos de código para list() e outras funções e métodos Python!
Abid Ali Awan's photo

Abid Ali Awan

Tutorial

Programação orientada a objetos em Python (OOP): Tutorial

Aborde os fundamentos da programação orientada a objetos (OOP) em Python: explore classes, objetos, métodos de instância, atributos e muito mais!
Théo Vanderheyden's photo

Théo Vanderheyden

Tutorial

Tipos de gráficos de dados e como criá-los em Python

Explore vários tipos de gráficos de dados, desde os mais comuns até os avançados e não convencionais, o que eles mostram, quando usá-los, quando evitá-los e como criá-los e personalizá-los em Python.
Elena Kosourova's photo

Elena Kosourova

Ver MaisVer Mais