Python Variáveis

Todo programa precisa guardar coisas enquanto trabalha: o preço do pão, quantos bolos sobraram na vitrine, o nome de quem fez o pedido. Na aula input() você já guardou uma resposta com nome = input(...). Aquilo era uma variável: um nome que o programa usa para lembrar de um valor. Nesta aula você vai entender direito o que ela é, como criar, usar e trocar o valor, e o que o Python responde quando você usa um nome que ele não conhece.

Você vai aprender
  • O que é uma variável: uma etiqueta com um nome, presa a um valor.
  • A criar uma variável com o sinal = e a mostrar o valor dela.
  • A usar variáveis em contas e guardar o resultado em outra variável.
  • A trocar o valor (reatribuição), inclusive a partir do valor antigo: estoque = estoque - 3.
  • A diferença entre "nome" com aspas e nome sem aspas.
  • Os erros reais: NameError (com a dica "Did you mean") e o = escrito ao contrário.

Os programas desta aula foram rodados com o Python 3.14 na máquina fictícia da Ana (usuária ana, computador notebook), com python3 arquivo.py. Cada caixa "Experimente" roda o mesmo Python de verdade, no seu navegador.


A ideia: uma etiqueta com nome

Na vitrine da padaria, cada bandeja tem uma plaquinha: "Pão de queijo", "Sonho", "Bolo de fubá". A atendente não precisa decorar onde está cada coisa: ela procura pela plaquinha. E a plaquinha "Bolo do dia" pode ir para outra bandeja amanhã, quando o bolo do dia for outro: o nome é o mesmo, o que ele indica muda.

Muita gente explica variável como uma caixa com etiqueta: a etiqueta é o nome, e o que está dentro é o valor. É uma boa primeira imagem. No Python, a imagem mais fiel é a da etiqueta presa ao valor: o valor (o número 7.5, o texto "Ana") existe na memória do computador, e a variável é um nome amarrado a ele. Quando você troca o valor de uma variável, o Python muda a etiqueta de lugar, amarrando-a ao valor novo.

ParteNome técnicoExemplo
A plaquinha, a etiquetao nome da variávelpreco, estoque, nome
O que está preso à etiqueta agorao valor7.5, 10, "Ana"
Prender a etiqueta a um valoratribuiçãopreco = 7.5

O nome "variável" vem daí: o valor preso à etiqueta pode variar enquanto o programa roda.


1. Criando uma variável

Para criar uma variável, escreva o nome, o sinal = e o valor:

preco = 7.5
print(preco)
print("O pão de forma custa", preco)
$ python3 preco.py
7.5
O pão de forma custa 7.5
preco
O nome da variável, escolhido por você. Sem acento e em minúsculas, que é o costume (as regras estão na próxima aula, Nomes de Variáveis).
=
Leia como "recebe": preco recebe 7.5. Não é o "igual" da matemática, que afirma que dois lados são iguais; aqui é uma ordem: "prenda o nome da esquerda ao valor da direita". (Quem compara se dois valores são iguais é o ==, na aula Comparações.)
7.5
O valor. Pode ser um número, um texto entre aspas, o resultado de uma conta, o que o input() devolveu…
print(preco)
Usa a variável. Onde o Python encontra o nome preco, ele coloca o valor preso a ele, 7.5.

A linha preco = 7.5 não mostra nada na tela: ela só guarda. Quem mostra é o print.

Não precisa dizer o tipo

Em algumas linguagens, como C e Java, você precisa avisar antes que tipo de valor a variável vai guardar (int idade = 29;). No Python, não: a variável nasce na primeira vez que recebe um valor, e o próprio valor sabe o seu tipo. Os tipos são o assunto da aula Tipos de Dados.

No modo interativo

No >>> (aula O Modo Interativo), digitar o nome de uma variável mostra o valor dela, sem precisar de print:

$ python3
Python 3.14.4 (main, Aug 20 2026, 10:41:58) [GCC 15.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> preco = 7.5                « a atribuição não mostra nada
>>> preco
7.5
>>> preco * 2
15.0
>>> exit()

2. Variáveis em contas

Uma variável pode entrar em qualquer lugar onde entraria o valor dela. E o resultado de uma conta pode ser guardado em outra variável:

preco = 7.5
quantidade = 3
total = preco * quantidade
print("Total:", total)
$ python3 compras.py
Total: 22.5
  1. preco recebe 7.5.
  2. quantidade recebe 3.
  3. Na linha 3, o Python primeiro resolve o lado direito do =: troca os nomes pelos valores, 7.5 * 3, e calcula 22.5. Só depois prende o nome total a esse resultado.
  4. O print mostra o texto e o valor de total.

A vantagem aparece quando o preço muda: você troca uma linha (preco = 8.0) e todas as contas que usam preco acompanham. Sem variável, você teria de caçar cada 7.5 espalhado pelo programa.

Missão: a Ana vai levar 4 pães de forma. Crie uma variável quantidade com o valor 4, numa linha só para ela, e use-a na conta no lugar do 3. O total deve dar 30.0.

preco = 7.5
total = preco * 3
print("Total:", total)
preco = 7.5
quantidade = 4
total = preco * quantidade
print("Total:", total)

3. Trocando o valor (reatribuição)

Uma variável que já existe pode receber outro valor a qualquer momento. É a mesma escrita, nome = valor; o valor antigo é esquecido:

estoque = 10
print("Estoque:", estoque)
estoque = 7
print("Estoque:", estoque)
$ python3 estoque.py
Estoque: 10
Estoque: 7

O mesmo print mostrou valores diferentes, porque, entre um e outro, a etiqueta estoque foi tirada do 10 e presa ao 7. Isso se chama reatribuição ("atribuir de novo"). O programa roda de cima para baixo, e cada linha vê o valor que a variável tem naquele momento.

Usando o valor antigo para calcular o novo

Na padaria, a Ana não sabe de cabeça quantos bolos vão sobrar: ela sabe quantos tinha e quantos vendeu. Dá para escrever exatamente isso:

estoque = 10
print("Abrimos com", estoque, "bolos")
estoque = estoque - 3
print("Depois da manhã:", estoque, "bolos")
estoque = estoque + 5
print("Depois da fornada:", estoque, "bolos")
$ python3 vendas.py
Abrimos com 10 bolos
Depois da manhã: 7 bolos
Depois da fornada: 12 bolos
estoque = estoque - 3
Na matemática, isso seria um absurdo (nenhum número é igual a ele mesmo menos 3). No Python faz todo sentido, porque o = é "recebe" e o lado direito é calculado primeiro.
estoque - 3
Primeiro passo: o Python pega o valor atual, 10, e calcula 10 - 3, que dá 7.
estoque = …
Segundo passo: a etiqueta estoque passa a ficar presa ao 7.

Esse jeito de atualizar uma variável é tão comum que tem uma forma curta, estoque -= 3, que você vai ver em Operadores de Atribuição.

Missão: a padaria abriu com 10 bolos e vendeu 4. Antes do último print, acrescente uma linha que tire 4 do estoque a partir do valor atual (estoque = estoque - …). Deve aparecer Sobraram 6 bolos.

estoque = 10
print("Abrimos com", estoque, "bolos")
print("Sobraram", estoque, "bolos")
estoque = 10
print("Abrimos com", estoque, "bolos")
estoque = estoque - 4
print("Sobraram", estoque, "bolos")

Copiar o valor de uma variável para outra

Uma variável também pode receber o valor de outra:

manha = 12
tarde = manha
manha = 20
print("manhã:", manha)
print("tarde:", tarde)
$ python3 copia.py
manhã: 20
tarde: 12

A linha tarde = manha prende a etiqueta tarde ao mesmo valor que manha tinha naquele momento, o 12. Depois, manha = 20 muda só a etiqueta manha de lugar; a tarde continua presa ao 12. As duas variáveis não ficam "ligadas" para sempre. (Com listas, que você vai ver mais adiante, essa história tem um detalhe a mais, explicado em Mutável × Imutável.)

A variável pode trocar até de tipo

recado = 10
print(recado)
recado = "dez pães"
print(recado)
$ python3 muda-tipo.py
10
dez pães

A etiqueta recado estava presa a um número e passou a estar presa a um texto. O Python deixa. Mas, num programa de verdade, uma variável que muda de tipo no meio do caminho costuma confundir quem lê. Dê a cada variável um papel só.


4. Com aspas é texto, sem aspas é variável

Na aula print(), a regra era: com aspas é texto, sem aspas é valor. Agora que existem variáveis, ela fica assim:

nome = "Ana"
print("nome")
print(nome)
$ python3 aspas-var.py
nome
Ana
  • print("nome") mostra o texto nome, as quatro letras.
  • print(nome) mostra o valor da variável nome, que é Ana.

Na primeira linha, "Ana" tem aspas porque é o texto guardado. Já o nome da variável nunca leva aspas.


Formas diferentes de chegar ao mesmo resultado

print("Total:", 7.5 * 3)

total = 7.5 * 3
print("Total:", total)

preco = 7.5
quantidade = 3
total = preco * quantidade
print("Total:", total)

As três partes mostram Total: 22.5.

FormaQuando usar
A conta direto no printUma conta rápida, que você não vai usar de novo
Uma variável para o resultadoQuando o resultado vai ser usado mais de uma vez, ou a linha do print ficaria comprida
Uma variável para cada valorO mais legível: cada número ganha um nome que diz o que ele é. preco * quantidade se explica sozinho; 7.5 * 3, não. Prefira este em programas de verdade

Quando dá errado

Nome digitado errado: NameError com dica
quantidade = 3
print(quantidad)
$ python3 digitou-errado.py
Traceback (most recent call last):
  File "/home/ana/digitou-errado.py", line 2, in <module>
    print(quantidad)
          ^^^^^^^^^
NameError: name 'quantidad' is not defined. Did you mean: 'quantidade'?
File "/home/ana/digitou-errado.py", line 2
O erro está na linha 2. A linha 1 rodou sem problema.
^^^^^^^^^
Aponta o nome que o Python não reconheceu.
NameError: name 'quantidad' is not defined.
"Erro de nome: o nome quantidad não está definido." Ninguém criou uma variável com esse nome, e o Python não adivinha.
Did you mean: 'quantidade'?
"Você quis dizer quantidade?" O Python procurou, entre os nomes que existem, um bem parecido, e achou. Essa dica é uma das ajudas das versões novas do Python.

Como consertar: escreva o nome exatamente como foi criado.

Maiúscula e minúscula fazem diferença
Preco = 7.5
print(preco)
$ python3 maiusc.py
Traceback (most recent call last):
  File "/home/ana/maiusc.py", line 2, in <module>
    print(preco)
          ^^^^^
NameError: name 'preco' is not defined. Did you mean: 'Preco'?

Para o Python, Preco e preco são duas variáveis diferentes. Foi criada a Preco, com P maiúsculo, e usada a preco, que não existe. Como consertar: use sempre minúsculas nos nomes de variáveis, e o problema nem aparece.

Usar a variável antes de criá-la
print(total)
total = 25
$ python3 antes.py
Traceback (most recent call last):
  File "/home/ana/antes.py", line 1, in <module>
    print(total)
          ^^^^^
NameError: name 'total' is not defined

A variável total existe no arquivo, mas só na linha 2. O Python roda de cima para baixo: quando chegou à linha 1, total ainda não tinha sido criada. Desta vez, sem "Did you mean": não existe nenhum nome parecido. Como consertar: crie a variável antes de usá-la.

O = ao contrário
10 = estoque
$ python3 invertido.py
  File "/home/ana/invertido.py", line 1
    10 = estoque
    ^^
SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?

"Não dá para atribuir a um literal aqui. Talvez você quisesse == em vez de =?" Um literal é um valor escrito direto no código, como 10 ou "Ana". O = sempre prende o nome da esquerda ao valor da direita, e 10 não é um nome. O Python sugere o == porque acha que talvez você quisesse comparar. Como consertar: o nome sempre do lado esquerdo, estoque = 10.

== no lugar de =
preco == 7.5
print(preco)
$ python3 igual-igual.py
Traceback (most recent call last):
  File "/home/ana/igual-igual.py", line 1, in <module>
    preco == 7.5
    ^^^^^
NameError: name 'preco' is not defined

O == não cria nada: ele pergunta "preco é igual a 7.5?". Para perguntar, o Python precisa do valor de preco, que não existe. Como consertar: para guardar, um = só.

Número guardado como texto
preco = "7.5"
print(preco * 2)
$ python3 texto-num.py
7.57.5

Sem erro, e um resultado estranho: 7.57.5. Com aspas, "7.5" é um texto, e texto vezes 2 é o texto repetido duas vezes (aula Juntar e Repetir Textos). Como consertar: números sem aspas, preco = 7.5. (Se o valor veio do input(), converta com float(), como na aula input().)

Missão: o programa para com NameError. Rode, leia a dica do Python e conserte.

preco = 7.5
quantidade = 3
total = preco * qantidade
print("Total:", total)
preco = 7.5
quantidade = 3
total = preco * quantidade
print("Total:", total)

Referência rápida

EscritaO que faz
preco = 7.5Cria a variável preco (ou troca o valor, se já existir). Não mostra nada
print(preco)Mostra o valor da variável
total = preco * quantidadeCalcula o lado direito e guarda o resultado em total
estoque = estoque - 3Calcula com o valor atual e guarda o resultado na mesma variável
tarde = manhatarde recebe o valor que manha tem agora
"nome" × nomeCom aspas: o texto. Sem aspas: o valor da variável
MensagemCausa provável
NameError: name 'quantidad' is not defined. Did you mean: 'quantidade'?Nome digitado errado (ou com maiúscula diferente)
NameError: name 'total' is not definedVariável usada antes de ser criada, ou nunca criada
SyntaxError: cannot assign to literal hereO valor do lado esquerdo do =: o nome vai à esquerda
NameError numa linha com ==== (comparar) no lugar de = (guardar)
7.57.5 em vez de 15.0Número guardado entre aspas (é texto)

Exercícios

1. Crie a variável

Complete para que a variável bolos receba o valor 8:

bolos 8

2. Qual é a saída?

pacotes = 5
pacotes = pacotes + 2
print(pacotes)
Saída:

3. E esta?

a = 3
b = a
a = 10
print(b)
Saída:

4. Como se lê preco = 7.5?

5. nome = "Ana". O que mostra print("nome")?

6. Qual destas linhas dá SyntaxError?

Missão final: o troco

Missão: a cliente pagou 50 por uma compra de 22.5. Crie uma variável troco com a conta pago - compra e mostre Troco: 27.5 usando essa variável.

pago = 50
compra = 22.5
pago = 50
compra = 22.5
troco = pago - compra
print("Troco:", troco)

Resumo

  • Uma variável é um nome (uma etiqueta) preso a um valor. Ela nasce na primeira vez que recebe um valor; não é preciso dizer o tipo.
  • nome = valor se lê "nome recebe valor". O lado direito é calculado primeiro; o nome fica sempre à esquerda.
  • Uma variável pode receber outro valor a qualquer momento (reatribuição); cada linha vê o valor daquele momento.
  • estoque = estoque - 3 calcula com o valor atual e guarda o resultado na mesma variável.
  • tarde = manha copia o valor de agora; mudar manha depois não muda tarde.
  • Com aspas é texto; sem aspas é o nome de uma variável.
  • Nome que não existe (digitado errado, com maiúscula diferente ou usado antes de criar) dá NameError, muitas vezes com a dica "Did you mean".