Quando você começa a programar em Python, logo percebe que precisa armazenar diferentes tipos de informações. Números, textos, listas de produtos, dados de usuários. Cada tipo de dado tem características próprias que definem como você pode usá-los no seu código. Entender esses tipos é essencial para criar programas que funcionem corretamente.
Neste guia completo, você vai aprender tudo sobre os principais tipos de dados em Python. Vamos explorar números inteiros, decimais, textos, listas e dicionários. Com exemplos práticos e diretos, você vai dominar cada tipo e saber exatamente quando usar cada um deles.
Créditos: Canal Refatorando
O que são Tipos de Dados em Python
Tipos de dados representam as diferentes categorias de valores que você pode trabalhar no Python. Cada tipo possui operações e características específicas. Um número permite cálculos matemáticos. Um texto permite manipulação de caracteres. Uma lista armazena múltiplos valores em sequência.
O Python é uma linguagem de tipagem dinâmica. Isso significa que você não precisa declarar o tipo de uma variável antes de usá-la. O próprio Python identifica automaticamente qual tipo de dado você está armazenando. Quando você escreve idade = 25, o Python entende que idade é um número inteiro.
Para verificar o tipo de qualquer variável, use a função **type()**. Essa função retorna o tipo exato do dado. Por exemplo, type(25) retorna <class 'int'>, indicando que 25 é um número inteiro. Essa flexibilidade torna o Python mais fácil de aprender, mas também exige atenção para evitar misturar tipos incompatíveis.
Int: Números Inteiros no Python
O tipo **int** representa números inteiros em Python. São valores sem casas decimais, positivos ou negativos. Use int para contar coisas, representar idades, anos, quantidades discretas. Qualquer número sem ponto decimal é automaticamente tratado como int.
Exemplos de números inteiros: 10, -5, 0, 1000000. Você pode realizar operações matemáticas básicas com eles. Soma, subtração, multiplicação, divisão. A divisão de dois inteiros pode resultar em um float se houver resto.
quantidade = 50
temperatura = -10
ano_nascimento = 1990
resultado = quantidade + 20 # 70
dobro = quantidade * 2 # 100O Python não tem limite de tamanho para números inteiros. Você pode trabalhar com valores extremamente grandes sem problemas. Diferente de outras linguagens que limitam o tamanho dos inteiros, Python gerencia automaticamente a memória necessária. Isso torna int muito flexível para cálculos científicos e financeiros.
Para converter outros tipos em int, use a função int(). Ela transforma strings numéricas ou floats em inteiros. Atenção: ao converter float para int, o Python descarta a parte decimal sem arredondar. Por exemplo, int(9.9) resulta em 9, não em 10.
Float: Números Decimais e Ponto Flutuante
O tipo **float** armazena números com casas decimais. Use float quando precisar de precisão fracionária. Preços, medidas, cálculos científicos, percentuais. Qualquer número com ponto decimal é automaticamente um float.
Exemplos comuns de float: 3.14, -0.5, 2.0, 99.99. Mesmo números redondos como 5.0 são floats se escritos com ponto. O ponto decimal define o tipo, não o valor em si.
preco = 49.90
altura = 1.75
taxa = 0.05
total = preco * (1 + taxa) # 52.395
media = (8.5 + 9.0 + 7.5) / 3 # 8.333...Floats podem ter pequenas imprecisões devido à forma como computadores armazenam números decimais. Isso é normal e acontece em todas as linguagens. Para trabalhos que exigem precisão exata, como cálculos financeiros, use a biblioteca decimal do Python.
Você pode converter int ou string em float usando float(). Por exemplo, float("3.14") transforma a string em número decimal. Operações entre int e float sempre resultam em float. Se você somar 5 + 2.0, o resultado será 7.0.
Str: Trabalhando com Textos e Strings
O tipo **str** representa textos e cadeias de caracteres. Use strings para armazenar nomes, mensagens, descrições, qualquer informação textual. Strings em Python são sempre delimitadas por aspas simples ou duplas.
Você pode criar strings de várias formas: "Olá", 'Python', """Texto longo""". Aspas triplas permitem textos com múltiplas linhas. A escolha entre aspas simples ou duplas é sua, mas mantenha consistência no código.
nome = "Maria Silva"
mensagem = 'Bem-vindo ao Python'
descricao = """Este é um texto
que ocupa várias linhas
no código"""
saudacao = "Olá, " + nome # Concatenação
tamanho = len(mensagem) # 21 caracteresStrings em Python são imutáveis. Você não pode alterar caracteres individuais depois de criar a string. Para modificar texto, crie uma nova string. Python oferece muitos métodos úteis para trabalhar com strings: upper(), lower(), replace(), split().
Você pode acessar caracteres individuais usando índices: nome[0] retorna o primeiro caractere. Use fatiamento para extrair partes: nome[0:5] retorna os cinco primeiros caracteres. Para converter outros tipos em string, use str(). Por exemplo, str(25) transforma o número em texto.
List: Armazenando Múltiplos Valores em Sequência
O tipo **list** permite armazenar múltiplos valores em uma única variável. Listas são ordenadas, mutáveis e permitem elementos duplicados. Use listas quando precisar agrupar dados relacionados que podem mudar ao longo do programa.
Crie listas usando colchetes: numeros = [1, 2, 3]. Listas podem conter qualquer tipo de dado. Você pode misturar números, textos, até outras listas dentro de uma lista. Essa flexibilidade torna listas extremamente versáteis.
frutas = ["maçã", "banana", "laranja"]
numeros = [10, 20, 30, 40, 50]
misto = [1, "texto", 3.14, True]
primeiro = frutas[0] # "maçã"
ultimo = frutas[-1] # "laranja"
frutas.append("uva") # Adiciona no final
frutas.remove("banana") # Remove elementoListas são mutáveis. Você pode adicionar, remover ou modificar elementos depois de criar a lista. Use append() para adicionar no final. Use insert() para adicionar em posição específica. Use remove() para excluir um elemento pelo valor.
Acesse elementos pelo índice: numeros[0] retorna o primeiro elemento. Índices negativos contam do final: numeros[-1] retorna o último. Use loops for para percorrer todos os elementos. Listas suportam operações como ordenação, reversão e contagem.
Dict: Organizando Dados com Dicionários
O tipo **dict** armazena dados em pares de chave e valor. Dicionários são ideais para representar estruturas de dados complexas. Use dict quando precisar associar informações relacionadas, como dados de um usuário ou configurações de sistema.
Crie dicionários usando chaves: pessoa = {"nome": "João", "idade": 30}. Cada chave deve ser única. Os valores podem ser de qualquer tipo. Você acessa valores pela chave, não por posição numérica.
usuario = {
"nome": "Ana Costa",
"email": "ana@email.com",
"idade": 28,
"ativo": True
}
nome_usuario = usuario["nome"] # "Ana Costa"
usuario["cidade"] = "São Paulo" # Adiciona nova chave
usuario["idade"] = 29 # Atualiza valor
del usuario["ativo"] # Remove chaveDicionários são mutáveis. Você pode adicionar, modificar ou remover pares chave-valor. Use keys() para obter todas as chaves. Use values() para obter todos os valores. Use items() para obter pares chave-valor.
Ao tentar acessar uma chave inexistente, Python gera erro. Para evitar isso, use o método get(): usuario.get("telefone", "Não informado"). Esse método retorna um valor padrão se a chave não existir. Dicionários são fundamentais para trabalhar com dados em JSON.
Conversão Entre Tipos de Dados
Python permite converter valores entre diferentes tipos. Esse processo se chama conversão de tipo ou casting. Use as funções int(), float(), str() para transformar dados conforme necessário.
Converta string para número: numero = int("42"). A string deve conter apenas dígitos válidos. Se tentar converter texto não numérico, Python gera erro. Sempre valide os dados antes de converter.
# String para número
texto = "100"
numero = int(texto) # 100
decimal = float("3.14") # 3.14
# Número para string
idade = 25
texto_idade = str(idade) # "25"
# Float para int (perde decimais)
valor = 9.99
inteiro = int(valor) # 9
# Int para float
x = 10
y = float(x) # 10.0Ao converter float para int, o Python trunca a parte decimal. Não há arredondamento automático. Se precisa arredondar, use a função round() antes de converter. Por exemplo, int(round(9.7)) resulta em 10.
Listas e dicionários também podem ser convertidos entre si em alguns casos. Use list() para transformar outros iteráveis em listas. Use dict() para criar dicionários a partir de tuplas de pares. Entender conversões ajuda a manipular dados de diferentes fontes.
Comparando Tipos de Dados
Cada tipo de dado tem características únicas que determinam quando usá-lo. Números inteiros servem para contagens e valores exatos. Floats para medidas que exigem precisão decimal. Strings para qualquer informação textual.
Listas armazenam coleções ordenadas que podem mudar. Dicionários organizam dados relacionados em pares chave-valor. A escolha do tipo correto torna seu código mais eficiente e legível.
| Tipo | Mutável | Ordenado | Uso Principal |
|---|---|---|---|
| int | Não | N/A | Números inteiros |
| float | Não | N/A | Números decimais |
| str | Não | Sim | Textos |
| list | Sim | Sim | Coleções ordenadas |
| dict | Sim | Não* | Pares chave-valor |
*Dicionários mantêm ordem de inserção desde Python 3.7, mas não são indexados por posição.
Tipos imutáveis como int, float e str não podem ser alterados após criação. Toda modificação cria um novo objeto. Tipos mutáveis como list e dict permitem alterações no mesmo objeto. Essa diferença afeta como você trabalha com cada tipo.
Operações Comuns com Cada Tipo
Cada tipo de dado suporta operações específicas. Números permitem operadores matemáticos: adição, subtração, multiplicação, divisão. Strings permitem concatenação com o operador +. Listas permitem adição de elementos e ordenação.
Para números inteiros e floats, use operadores aritméticos básicos. Divisão sempre retorna float, mesmo entre inteiros. Use // para divisão inteira. Use % para resto da divisão. Use ** para potenciação.
# Operações com números
soma = 10 + 5 # 15
divisao = 10 / 3 # 3.333...
div_inteira = 10 // 3 # 3
resto = 10 % 3 # 1
potencia = 2 ** 3 # 8
# Operações com strings
nome = "João"
sobrenome = "Silva"
completo = nome + " " + sobrenome # "João Silva"
repetido = nome * 3 # "JoãoJoãoJoão"
# Operações com listas
lista = [1, 2, 3]
lista.extend([4, 5]) # [1, 2, 3, 4, 5]
lista.sort() # Ordena a lista
tamanho = len(lista) # 5
# Operações com dicionários
pessoa = {"nome": "Maria", "idade": 25}
pessoa.update({"cidade": "Rio"}) # Adiciona/atualiza
chaves = pessoa.keys() # dict_keys(['nome', 'idade', 'cidade'])Strings suportam métodos úteis de manipulação. Use upper() e lower() para mudar maiúsculas. Use strip() para remover espaços. Use split() para dividir em lista. Use replace() para substituir partes do texto.
Verificando Tipos de Dados
Verificar o tipo de uma variável ajuda a evitar erros. Use a função type() para descobrir o tipo exato. Use isinstance() para verificar se um valor pertence a determinado tipo. Essa prática é essencial ao trabalhar com entrada de dados do usuário.
idade = 25
print(type(idade)) # <class 'int'>
preco = 19.90
print(type(preco)) # <class 'float'>
nome = "Python"
print(type(nome)) # <class 'str'>
# Verificando tipos
if isinstance(idade, int):
print("É um número inteiro")
if isinstance(preco, (int, float)):
print("É um número")A função isinstance() aceita uma tupla de tipos. Isso permite verificar múltiplos tipos de uma vez. É mais seguro que usar type() diretamente em comparações. Use isinstance para validar dados antes de processá-los.
Conhecer os tipos ajuda a depurar código. Muitos erros acontecem ao misturar tipos incompatíveis. Por exemplo, tentar somar string com número. Verificar tipos antes de operações críticas previne falhas no programa.
Boas Práticas com Tipos de Dados
Use o tipo mais adequado para cada situação. Não armazene números em strings se vai fazer cálculos. Não use listas quando precisa de chaves descritivas. Escolher o tipo correto torna o código mais claro e eficiente.
Evite misturar tipos desnecessariamente. Mantenha consistência nas estruturas de dados. Se uma lista deve conter apenas números, não adicione strings. Isso facilita tratamento de erros e manutenção futura.
- Valide dados antes de converter tipos
- Use type hints para documentar tipos esperados
- Prefira dicionários para dados estruturados
- Use listas para coleções de itens similares
- Escolha nomes descritivos de variáveis que indiquem o tipo
- Documente tipos esperados em funções
Aproveite a tipagem dinâmica do Python sem abusar dela. Em projetos maiores, considere usar type hints. Eles não afetam a execução, mas ajudam editores de código a detectar erros. Por exemplo: def calcular(x: int, y: int) -> int:.
Exemplos Práticos do Dia a Dia
Veja como os tipos de dados aparecem em situações reais de programação. Estes exemplos mostram aplicações práticas que você encontrará em projetos reais.
Sistema de Cadastro Simples
# Cadastro de produto usando dicionário
produto = {
"nome": "Notebook",
"preco": 2999.90,
"estoque": 15,
"categorias": ["Eletrônicos", "Informática"],
"disponivel": True
}
# Calculando valor total em estoque
valor_total = produto["preco"] * produto["estoque"]
print(f"Valor total: R$ {valor_total:.2f}")
# Adicionando nova categoria
produto["categorias"].append("Ofertas")
# Atualizando estoque
produto["estoque"] -= 1Cálculo de Média de Notas
# Armazenando notas em lista
notas = [8.5, 7.0, 9.0, 6.5, 8.0]
# Calculando média
media = sum(notas) / len(notas)
print(f"Média: {media:.2f}")
# Verificando aprovação
aprovado = media >= 7.0
situacao = "Aprovado" if aprovado else "Reprovado"
print(f"Situação: {situacao}")Processamento de Lista de Compras
# Lista de compras com preços
compras = [
{"item": "Arroz", "preco": 25.90, "quantidade": 2},
{"item": "Feijão", "preco": 8.50, "quantidade": 3},
{"item": "Óleo", "preco": 7.20, "quantidade": 1}
]
# Calculando total
total = 0
for compra in compras:
subtotal = compra["preco"] * compra["quantidade"]
total += subtotal
print(f"{compra['item']}: R$ {subtotal:.2f}")
print(f"\nTotal da compra: R$ {total:.2f}")Esses exemplos demonstram como combinar diferentes tipos de dados para resolver problemas reais. Note como dicionários organizam dados relacionados. Como listas armazenam múltiplos valores. Como números permitem cálculos precisos.
Perguntas Frequentes (FAQ)
1. Qual a diferença entre int e float no Python?
Int representa números inteiros sem decimais, enquanto float armazena números com casas decimais e maior precisão.
2. Posso misturar tipos diferentes em uma lista?
Sim, Python permite listas com tipos diferentes, mas não é recomendado para manter código organizado.
3. Como converter string em número no Python?
Use int() para converter em inteiro ou float() para decimal. Exemplo: numero = int(“42”).
4. O que acontece se somar int com float?
O resultado sempre será float. Python converte automaticamente o int em float antes da operação.
5. Strings são mutáveis no Python?
Não, strings são imutáveis. Qualquer modificação cria uma nova string na memória.
6. Quando usar lista ao invés de dicionário?
Use lista para coleções ordenadas de itens similares. Use dicionário quando precisa associar chaves a valores.
7. Como verificar se uma variável é do tipo string?
Use isinstance(variavel, str) que retorna True se for string ou type(variavel) para ver o tipo.
8. Posso usar números como chaves em dicionários?
Sim, qualquer tipo imutável pode ser chave em dicionário, incluindo números e tuplas.
9. O que significa tipagem dinâmica no Python?
Significa que Python identifica automaticamente o tipo da variável, sem necessidade de declaração prévia.
10. Como criar uma lista vazia no Python?
Use colchetes vazios: lista = [] ou a função list(): lista = list().








