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).

PYTHON
# Define uma variável chamada age, armazenando o número 18
age = 18

Quando você escreve age = 18, o Python faz duas coisas:

  1. Aloca espaço na memória e armazena o número 18.
  2. Anexa o rótulo age a 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:

PYTHON
print(age)       # Exibe 18
print(age + 5)   # Exibe 23
age = 20         # Altera o valor — o conteúdo da caixa muda
print(age)       # Exibe 20
💡 Dica: As variáveis são chamadas de "variáveis" porque seus valores podem mudar. Primeiro você define 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:

PYTHON
# Bons nomes (claros à primeira vista)
total_price = 99.9
student_count = 35

# Maus nomes (propósito pouco claro)
a = 99.9
b = 35
💡 Dica: A primeira regra do bom código é "outros podem entender sua intenção sem comentários." Nomear variáveis é o primeiro passo. Gastar 5 segundos em um bom nome economiza 5 minutos para o você do futuro lendo o código.


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
PYTHON
# 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():

PYTHON
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:

PYTHON
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).

⚠️ Observação: Tipagem dinâmica é flexível, mas não abuse. Em projetos reais, mantenha uma variável para um tipo, evitando confusão.


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

PYTHON
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:

PYTHON
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:

PYTHON
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.

PYTHON
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:

PYTHON
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:

PYTHON
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
💡 Dica: Em :.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.

PYTHON
# 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")
▶ Experimente

Saída:

TEXT
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.

PYTHON
# 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
▶ Experimente

Saída:

TEXT
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
⚠️ Observação: + 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:

PYTHON
# 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
▶ Experimente

Saída:

TEXT
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.

💡 Dica: Este estilo "Pytônico" é legal, mas usar demais pode confundir iniciantes. Use com moderação em projetos de equipe.


Casos de Uso Comuns


❓ 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 que float é impreciso? Por que 0.1 + 0.2 é igual a 0.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 precisamente 1/3 = 0.333..., o binário não pode representar precisamente 0.1 e 0.2. Para cálculos precisos (como moeda), use o módulo decimal em vez de float. P: Qual a diferença entre None, 0 e string vazia ""? R: None significa "nada" ou "nenhum valor existe." É diferente de 0, "" e False. 0 é um número, "" é uma string vazia, False é falso booleano — todos "existem" mas representam vazio. None significa que não há container nenhum. Pense em "" como uma tigela vazia, enquanto None significa que não há tigela.


📖 Resumo


📝 Atividades

  1. Básico (Dificuldade ⭐): Defina variáveis city, temperature, is_sunny para o nome da sua cidade, temperatura de hoje (float) e se está ensolarado (bool). Use print() para exibir uma frase completa.

  2. Intermediário (Dificuldade ⭐⭐): Defina duas variáveis inteiras minutes e hours. Converta hours para minutos, some minutes e exiba o total. Por exemplo, hours=2, minutes=15 deve exibir 135 minutos. Dica: 1 hora = 60 minutos.

  3. 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.

100%