Variáveis e tipos de dados em Python: uma introdução prática
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ê vai enviar uma encomenda. Você preenche uma etiqueta que pede o peso. Em vez de um número, você escreve "pesado". O sistema da transportadora trava: ele não consegue calcular um preço a partir da palavra "pesado".
É exatamente esse tipo de problema que os tipos de dados resolvem na programação. Os tipos dizem ao Python se algo é um número, um texto, uma resposta verdadeiro/falso ou nada. Acertar isso é a diferença entre um código que funciona e um código que explode.
No tutorial anterior, você aprendeu a criar variáveis e a trabalhar com strings e números. Agora vamos mais fundo. Você vai conhecer todos os tipos de dados básicos do Python, aprender a verificá-los e a converter de um para outro, e evitar os erros mais comuns relacionados a tipos.
O que são tipos de dados em Python?
Um tipo de dado é um rótulo que diz ao Python que tipo de valor algo é. Ele determina quais operações você pode fazer com esse valor.
Pense nos recipientes de uma cozinha. Um copo medidor serve para líquidos. Uma balança pesa sólidos. Você não colocaria farinha num copo medidor esperando obter o peso exato. Cada recipiente foi feito para um tipo específico de coisa.
O Python tem cinco tipos de dados básicos que você vai usar todos os dias:
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'NoneType'>
A função type() é sua melhor amiga quando você trabalha com tipos de dados. Ela diz exatamente com que tipo de valor você está lidando. Quando o código não funciona, verificar os tipos costuma ser o jeito mais rápido de achar o problema.
Como funcionam inteiros e floats em Python
O Python tem dois tipos de números: números inteiros (int), para números sem parte decimal, e números de ponto flutuante (float), para números com casas decimais. Na maior parte do tempo, você não precisa pensar na diferença. Mas às vezes ela importa muito.
Quando usar inteiros e quando usar floats
Use inteiros para valores que nunca têm parte decimal, como a contagem de pessoas, uma pontuação ou o índice de uma lista. Use floats para números que podem ter parte decimal, como medir temperatura, calcular porcentagens ou trabalhar com dinheiro.
<class 'int'> <class 'float'>
Números grandes mais legíveis com sublinhados
Números grandes são difíceis de ler. 1000000 é um milhão ou dez milhões? O Python permite usar sublinhados (underscores) como separadores visuais. Ele ignora completamente os sublinhados: eles servem só para os seus olhos.
8000000000 <class 'int'> 1250000.75
O problema do 0.1 + 0.2 em Python
Aqui está algo que surpreende quase todo mundo na primeira vez. Experimente executar este código:
0.30000000000000004
Você esperava 0.3, mas recebeu 0.30000000000000004. Isso não é um bug do Python. A maioria das linguagens de programação dá a mesma resposta, porque elas guardam números decimais do mesmo jeito.
Computadores guardam números em binário (uns e zeros). Alguns números decimais, como 0,1, não podem ser representados com exatidão em binário, assim como 1/3 não pode ser escrito com exatidão como decimal (0,333333... continua para sempre).
False 0.3 True
Mais um detalhe importante: a divisão comum (/) sempre produz um float, mesmo quando os dois números são inteiros e a divisão é exata.
5.0 <class 'float'> 5 <class 'int'>
Como funcionam os booleanos em Python (True e False)
Um booleano é o tipo de dado mais simples do Python. Ele só pode ter um de dois valores: True ou False. Só isso.
Booleanos são como interruptores de luz: ligado ou desligado, sim ou não. Eles são a base de todas as decisões que o seu código toma. Toda instrução if, todo laço while, toda comparação se resume a um booleano.
True <class 'bool'> True False True False
O que são valores truthy e falsy em Python?
Qualquer valor em Python pode ser tratado como booleano. Alguns valores contam como True (são chamados de "truthy") e outros contam como False (são chamados de "falsy"). Você pode testar qualquer valor passando-o para bool().
False False False False False --- True True True True True
Estes são os valores falsy que você mais vai encontrar. O padrão: False, None, o zero de qualquer tipo numérico e qualquer coisa vazia. Todo o resto é truthy:
| Valor falsy | Tipo | Por que é falsy |
|---|---|---|
False | bool | É literalmente False |
0 | int | Zero |
0.0 | float | Zero |
"" | str | String vazia |
None | NoneType | Ausência de valor |
[] | list | Lista vazia |
{} | dict | Dicionário vazio |
() | tuple | Tupla vazia |
set() | set | Conjunto vazio |
O que é None em Python?
None é o jeito do Python de dizer "não tem nada aqui". Não é zero. Não é uma string vazia. É a ausência total de um valor.
Pense num formulário com um campo "nome do meio". Se alguém deixa o campo em branco, isso é diferente de escrever o número 0 ou uma string vazia "". A pessoa só não tem nome do meio. Esse campo em branco é None.
None <class 'NoneType'> False False False
Como verificar se um valor é None em Python
Sempre use is None ou is not None para verificar se algo é None. Não use ==. Essa é uma convenção do Python com um motivo técnico real por trás.
value = None
if value == None:
print("No value")value = None
if value is None:
print("No value")Hello, stranger! Hello, Alice!
Você vai ver None usado como valor padrão em funções o tempo todo. É um jeito limpo de dizer "este argumento é opcional".
Como verificar o tipo de uma variável em Python
O Python oferece duas ferramentas para verificar tipos: type() e isinstance(). Elas se parecem, mas servem a propósitos diferentes.
Usando type() para identificar um valor
type() informa o tipo exato de um valor. É ótima para depurar: quando algo não funciona, verificar o tipo muitas vezes revela o problema na hora.
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'NoneType'> True False
Usando isinstance() para verificar tipos
isinstance() verifica se um valor é de um certo tipo (ou de um entre vários tipos). É a forma preferida de verificar tipos em código real, porque funciona com herança e é mais legível.
True True False True True False
Uma curiosidade: em Python, os booleanos são na verdade uma subclasse dos inteiros. No fundo, True é 1 e False é 0.
True True 2 10 42
Como converter entre tipos em Python
Às vezes você tem um valor de um tipo, mas precisa dele em outro. Um usuário digita a idade num formulário: ela chega como a string "25", mas você precisa do inteiro 25 para fazer contas. O Python oferece funções embutidas para converter entre tipos.
Convertendo com int(), float(), str() e bool()
30 19.98 Your score: 100 42.0 3
Armadilhas comuns na conversão de tipos
Nem toda conversão funciona. O Python interrompe o programa com um ValueError se você tentar converter algo que não faz sentido.
42 3.14 100 Error: invalid literal for int() with base 10: 'hello' Error: invalid literal for int() with base 10: '3.14' 3
Converter com bool() segue as regras de truthy/falsy que vimos antes:
True False True False False True
Atribuição de variáveis em Python: atribuição múltipla e troca de valores
O Python tem alguns atalhos práticos para trabalhar com variáveis que a maioria das outras linguagens não tem. Não são só truques espertos: desenvolvedores profissionais usam esses atalhos todos os dias.
Atribuição múltipla em uma linha
Você pode atribuir valores a várias variáveis numa única linha. Isso é especialmente útil quando você tem um grupo de valores relacionados.
10 20 30 Alice Smith, age 25 0 0 0
Trocando variáveis sem uma variável temporária
Na maioria das linguagens, trocar o valor de duas variáveis exige uma variável temporária. O Python tem um jeito mais limpo.
a = 1
b = 2
# Need a third variable to hold the value
temp = a
a = b
b = temp
print(a, b) # 2 1a = 1
b = 2
# Python handles the swap in one step
a, b = b, a
print(a, b) # 2 1A linha a, b = b, a funciona porque o Python avalia primeiro todo o lado direito (b, a vira 2, 1) e depois atribui esses valores ao lado esquerdo. Nenhuma variável temporária é necessária.
Exercícios práticos
Hora de pôr seu conhecimento à prova! Estes exercícios cobrem tudo o que você viu neste tutorial. Eles vão do mais fácil ao mais difícil.
Lembre-se: quebrar a cabeça faz parte do aprendizado. Tente cada exercício antes de espiar as dicas. Leia as mensagens de erro com atenção: elas costumam dizer exatamente o que deu errado.
Crie uma variável de cada tipo básico do Python e exiba o tipo dela. A saída deve ser exatamente:
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'NoneType'>Você pode dar qualquer nome e qualquer valor às variáveis, desde que os tipos estejam certos.
Converta uma temperatura de Fahrenheit para Celsius.
A fórmula é: **Celsius = (Fahrenheit - 32) * 5 / 9**
A variável fahrenheit já vem com o valor 98.6. Calcule o equivalente em Celsius e exiba o resultado exatamente neste formato:
98.6F = 37.0CSem executar o código, preveja o que cada linha vai exibir. Depois execute para conferir suas respostas.
Escreva suas previsões como comentários e clique em Executar para conferir.
Este código deveria exibir um resumo do perfil de um usuário, mas ele quebra com um TypeError. Corrija o código para que ele exiba:
Name: Alice
Age: 25
Height: 5.6 feetVocê pode corrigir do jeito que preferir (f-strings, conversão com str() etc.).
Você tem duas variáveis: a = 10 e b = 20. Troque os valores delas sem usar uma variável temporária e depois exiba as duas.
Saída esperada:
a = 20
b = 10Você recebe uma string price_text contendo "49" e um inteiro quantity igual a 3.
1. Converta price_text para inteiro
2. Calcule o total (preço vezes quantidade)
3. Exiba o resultado exatamente neste formato:
3 items at $49 each = $147 totalUse as variáveis originais: não escreva os números diretamente na instrução print.
Resumo: variáveis e tipos de dados em Python
Aqui está uma referência rápida de tudo o que você aprendeu neste tutorial:
| Tipo | Exemplo | O que guarda |
|---|---|---|
int | 42, -7, 1_000 | Números inteiros |
float | 3.14, 0.0, -2.5 | Números com casas decimais |
str | "hello", 'world' | Texto |
bool | True, False | Valores sim/não |
None | None | Ausência de valor |
Ferramentas principais:
| Ferramenta | Para que serve | Exemplo |
|---|---|---|
type(x) | Ver qual é o tipo de x | type(42) → <class 'int'> |
isinstance(x, int) | Verificar se x é de um certo tipo | isinstance(42, int) → True |
int(), float(), str() | Converter entre tipos | int("42") → 42 |
bool() | Verificar se é truthy/falsy | bool("") → False |
a, b = 1, 2 | Atribuição múltipla | Atribuir várias variáveis de uma vez |
a, b = b, a | Trocar valores | Sem variável temporária |
O que vem a seguir?
No próximo tutorial, Números e matemática, você vai se aprofundar no sistema numérico do Python. Vai conhecer o módulo math, estratégias de arredondamento, formatação de números e como criar programas que fazem contas como um profissional.