Variáveis e Tipos de Dados Básicos
Na última lição, fizemos o Python exibir uma linha "Hello, World!". Mas se tudo o que pudéssemos fazer fosse exibir texto fixo, a programação seria entediante. Esta lição apresenta as variáveis — o conceito mais fundamental da programação. Pense nelas como caixas etiquetadas para dados, permitindo armazenar e modificar valores a qualquer momento.
1. O que é uma Variável
Uma variável é um nome para um pedaço de dado. Imagine como uma caixa etiquetada: a etiqueta tem um nome (nome da variável), e a caixa contém o dado (valor).
# Define uma variável chamada age, armazenando o número 18
age = 18
Quando você escreve age = 18, o Python faz duas coisas:
- Aloca espaço na memória e armazena o número
18. - Anexa o rótulo
agea esse espaço.
A partir de então, age representa o número 18 — você pode usá-lo em cálculos, exibi-lo ou modificá-lo:
print(age) # Exibe 18
print(age + 5) # Exibe 23
age = 20 # Altera o valor — o conteúdo da caixa muda
print(age) # Exibe 20
age = 18, depois altera para age = 20. O mesmo nome pode apontar para valores diferentes — isso é crucial na programação.
2. Regras de Nomenclatura de Variáveis
Python tem regras estritas e convenções da comunidade para nomes de variáveis:
Deve Seguir (ou receberá um erro)
| Regra | Exemplos Corretos | Exemplos Errados |
|---|---|---|
| Apenas letras, dígitos e sublinhados | my_name, age2 |
my-name (hífen não permitido) |
| Não pode começar com dígito | name1 |
1name |
| Não pode ser palavra-chave do Python | my_if |
if (if é palavra-chave) |
| Difere maiúsculas de minúsculas | name e Name são diferentes |
— |
Python tem 35 palavras-chave (também chamadas de palavras reservadas), como if, for, while, import, class, def, return. Estas fazem parte da sintaxe do Python e não podem ser usadas como nomes de variáveis.
Convenções Recomendadas (PEP 8)
PEP 8 é o guia de estilo oficial do Python, amplamente seguido na indústria:
- Use letras minúsculas com sublinhados (snake_case):
student_name,total_score, nãostudentName(camelCase). - Use MAIÚSCULAS para constantes:
PI = 3.14159,MAX_SIZE = 100(Python não tem constantes verdadeiras; maiúsculas são uma convenção que significa "por favor, não me modifique"). - Use nomes significativos:
ageé melhor quea,total_studentsé melhor quets. Código é feito para ser lido — bons nomes economizam metade dos comentários.
# Bons nomes (claros à primeira vista)
total_price = 99.9
student_count = 35
# Maus nomes (propósito pouco claro)
a = 99.9
b = 35
3. Tipos de Dados Básicos
Python tem 5 tipos de dados básicos comumente usados:
| Nome do Tipo | Nome em Python | Exemplo | Descrição |
|---|---|---|---|
| Inteiro | int |
42, -1, 1000 |
Números inteiros sem decimais |
| Ponto Flutuante | float |
3.14, -0.5, 2.0 |
Números com decimais |
| String | str |
"Hello", 'Python' |
Texto, entre aspas |
| Booleano | bool |
True, False |
Representa verdadeiro/falso, com maiúscula |
| Nulo | NoneType |
None |
Representa "nada," com maiúscula |
# Define uma variável para cada tipo
age = 25 # int
price = 19.99 # float
name = "João Silva" # str
is_student = True # bool
result = None # NoneType
print(age) # Exibe 25
print(price) # Exibe 19.99
print(name) # Exibe João Silva
print(is_student) # Exibe True
print(result) # Exibe None
Verificando o Tipo com type()
Se você não tiver certeza sobre o tipo de uma variável, use type():
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("Hello")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>
Tipagem Dinâmica
Python tem tipagem dinâmica — a mesma variável pode conter tipos diferentes em momentos diferentes:
x = 10 # x é um inteiro
print(x) # Exibe 10
x = "Hello" # Mesma variável, agora uma string
print(x) # Exibe Hello
x = True # Agora um booleano
print(x) # Exibe True
Isso não é permitido em linguagens de tipagem estática como C++ ou Java — uma vez declarado, o tipo é fixo. A tipagem dinâmica oferece flexibilidade e código conciso, mas uma variável mudando de tipo acidentalmente pode causar erros em tempo de execução (veremos exemplos mais adiante).
4. Mais Recursos do print()
Vimos print() na Lição 01. Aqui estão mais dois truques úteis:
Exibindo Múltiplos Valores com Vírgulas
name = "Maria"
age = 22
print("My name is", name, "and I'm", age, "years old")
# Saída: My name is Maria and I'm 22 years old
print() adiciona automaticamente um espaço entre os argumentos. Para mudar isso, use o parâmetro sep:
print("2026", "06", "19", sep="-")
# Saída: 2026-06-19
Usando end para Controlar Fim de Linha
Por padrão, print() adiciona uma nova linha após a saída. Use end para mudar isso:
print("First line", end=" → ")
print("Second line", end=" → ")
print("Third line")
# Saída: First line → Second line → Third line
5. f-strings: Incorporando Variáveis em Strings
Você já viu f"Hello, {name}" em exemplos anteriores. Isso é chamado de f-string (string formatada), a maneira mais comum de formatar strings em Python. Simplificando: prefixe a string com f, envolva variáveis em {}, e Python as substitui pelos valores correspondentes.
name = "Maria"
age = 22
print(f"My name is {name}, I'm {age} years old.")
# Saída: My name is Maria, I'm 22 years old.
Você pode colocar não apenas nomes de variáveis, mas expressões dentro das chaves:
a = 10
b = 3
print(f"{a} + {b} = {a + b}") # Saída: 10 + 3 = 13
print(f"{a} × {b} = {a * b}") # Saída: 10 × 3 = 30
Você também pode controlar a formatação de números:
pi = 3.14159265
print(f"π = {pi}") # Saída: π = 3.14159265
print(f"π ≈ {pi:.2f}") # Saída: π ≈ 3.14 (2 casas decimais)
print(f"π ≈ {pi:.4f}") # Saída: π ≈ 3.1416 (4 casas decimais)
# Adicionar separador de milhares
big = 1234567
print(f"{big:,}") # Saída: 1,234,567
:.2f, os dois pontos iniciam o especificador de formato — . significa decimal, 2 é o número de dígitos, f significa float. :, adiciona separador de milhares. Não se preocupe em memorizar — você aprenderá com a prática.
6. Exemplos
Exemplo 1: Armazenar Informações Pessoais com Variáveis (Dificuldade ⭐)
Mostra como armazenar informações pessoais e referenciá-las na saída.
# Armazena informações pessoais em variáveis
name = "João Silva" # String — texto entre aspas
age = 28 # Inteiro — número inteiro
height = 1.75 # Float — número decimal
is_programmer = True # Booleano — True ou False
# Usa f-strings para incorporar valores de variáveis na saída
print(f"Name: {name}")
print(f"Age: {age}")
print(f"Height: {height} m")
print(f"Learning programming: {is_programmer}")
# Curiosidade — proporção entre altura e idade
print(f"{name}'s height is {height / age:.3f} times their age")
Saída:
Name: João Silva
Age: 28
Height: 1.75 m
Learning programming: True
João Silva's height is 0.062 times their age
O :.3f em {height / age:.3f} significa "manter 3 casas decimais."
Exemplo 2: Operações Entre Variáveis (Dificuldade ⭐⭐)
Tipos diferentes suportam operações diferentes. Esteja ciente das regras.
# Operações numéricas
a = 10
b = 3
print(f"{a} + {b} = {a + b}") # Adição: 13
print(f"{a} - {b} = {a - b}") # Subtração: 7
print(f"{a} * {b} = {a * b}") # Multiplicação: 30
print(f"{a} / {b} = {a / b}") # Divisão: 3.333... (resultado float)
print(f"{a} // {b} = {a // b}") # Divisão inteira: 3 (apenas parte inteira)
print(f"{a} % {b} = {a % b}") # Módulo: 1 (resto)
print(f"{a} {b} = {a b}") # Potência: 10³ = 1000
# Concatenação de strings
first_name = "João"
last_name = "Silva"
full_name = first_name + " " + last_name # + concatena strings
print(f"Full name: {full_name}")
# Tipos diferentes não podem ser misturados
# Isto daria erro: não pode somar string e número
# result = "Age: " + 25 ← descomente para testar
Saída:
10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3.3333333333333335
10 // 3 = 3
10 % 3 = 1
10 ** 3 = 1000
Full name: João Silva
+ entre números é adição; entre strings é concatenação. Mas você não pode usar + entre uma string e um número. Se necessário, converta manualmente: "Age: " + str(25). A função str() converte outros tipos para strings.
Exemplo 3: Atribuição Múltipla e Troca (Dificuldade ⭐⭐⭐)
Python tem sintaxe concisa para código elegante:
# Atribui múltiplas variáveis em uma linha
x, y, z = 10, 20, 30
print(f"x={x}, y={y}, z={z}") # x=10, y=20, z=30
# Troca duas variáveis — outras linguagens precisam de variável temporária
# Python faz em uma linha
a, b = 5, 10
print(f"Antes da troca: a={a}, b={b}")
a, b = b, a
print(f"Depois da troca: a={a}, b={b}")
# Atribui o mesmo valor a múltiplas variáveis
p = q = r = 0
print(f"p={p}, q={q}, r={r}") # p=0, q=0, r=0
Saída:
x=10, y=20, z=30
Antes da troca: a=5, b=10
Depois da troca: a=10, b=5
p=0, q=0, r=0
a, b = b, a funciona porque Python avalia todas as expressões do lado direito primeiro, depois as atribui todas de uma vez.
Casos de Uso Comuns
- Estatísticas de jogador: Vida, pontuação, nível são armazenados em variáveis, atualizados conforme o jogo avança.
- Cálculo de preço em e-commerce: Preço unitário, quantidade, desconto, frete — todas variáveis. O programa calcula o preço final.
- Gerenciamento de configuração: Endereços de banco de dados, chaves de API, nomes de sites armazenados em variáveis — mude em um lugar e todo o programa é afetado.
❓ Perguntas Frequentes
P:
=significa "igual"? Por que não é como na matemática? R: Em Python,=é o operador de atribuição — significa "armazene o valor da direita na variável da esquerda." É uma instrução, não uma declaração de igualdade. Para verificar se dois valores são iguais, use==(dois sinais de igual). Um dos erros mais comuns de iniciantes é usar=em vez de==em condições. ⚠️ P: Posso usar caracteres chineses como nomes de variáveis? Python 3 suporta, certo? R: Tecnicamente Python 3 suporta nomes de variáveis em chinês (ex.:nome = "João Silva"), mas é fortemente desencorajado. A maioria das ferramentas de programação, bibliotecas e trechos de código usam nomes em inglês. Misturar idiomas parece estranho e cria barreiras de comunicação em equipes internacionais. Use nomes de variáveis em inglês. P: Por quefloaté impreciso? Por que0.1 + 0.2é igual a0.30000000000000004? R: Isso não é culpa do Python — é uma limitação fundamental de como os computadores armazenam floats em binário. Assim como o decimal não pode representar precisamente1/3 = 0.333..., o binário não pode representar precisamente0.1e0.2. Para cálculos precisos (como moeda), use o módulodecimalem vez defloat. P: Qual a diferença entreNone,0e string vazia""? R:Nonesignifica "nada" ou "nenhum valor existe." É diferente de0,""eFalse.0é um número,""é uma string vazia,Falseé falso booleano — todos "existem" mas representam vazio.Nonesignifica que não há container nenhum. Pense em""como uma tigela vazia, enquantoNonesignifica que não há tigela.
📖 Resumo
- Variáveis são nomes para dados, atribuídos com
=, valores podem mudar a qualquer momento - Nomes de variáveis só podem conter letras, dígitos e sublinhados; não podem começar com dígitos ou ser palavras-chave
- Python tem 5 tipos básicos:
int,float,str,bool,NoneType - Python tem tipagem dinâmica — mesma variável pode conter tipos diferentes, mas consistência é recomendada
type()verifica o tipo de dado de uma variável- f-strings usam
f"xxx{variable}"para incorporar variáveis e expressões em strings
📝 Atividades
-
Básico (Dificuldade ⭐): Defina variáveis
city,temperature,is_sunnypara o nome da sua cidade, temperatura de hoje (float) e se está ensolarado (bool). Useprint()para exibir uma frase completa. -
Intermediário (Dificuldade ⭐⭐): Defina duas variáveis inteiras
minutesehours. Convertahourspara minutos, someminutese exiba o total. Por exemplo,hours=2, minutes=15deve exibir135minutos. Dica: 1 hora = 60 minutos. -
Desafio (Dificuldade ⭐⭐⭐): Sem usar uma variável temporária, troque três variáveis em um deslocamento circular:
a → b → c → a(a recebe o valor original de b, b recebe o de c, c recebe o de a). Dica: A ideia central éa, b, c = b, c, a.



