Python O Editor do Guia
Em toda aula deste guia aparecem caixas Experimente: você escreve um programa em Python, clica em Rodar e vê, logo embaixo, o que o programa escreveu. Quem roda o seu código não é uma imitação: é o Python de verdade, o mesmo programa que você instala no computador, funcionando dentro do seu navegador. Não precisa instalar nada. Nesta página você conhece cada parte do editor, aprende a responder quando o programa pergunta alguma coisa, a parar um programa que não termina e vê o que muda quando você roda o mesmo programa no terminal.
- As partes de uma caixa Experimente: o código, Rodar, o terminal da caixa, Restaurar e Ver solução.
- Por que cada Rodar começa do zero, com a pasta vazia.
- Como responder ao
input(): digitando no terminal da caixa ou pelo campo Entrada. - Como funcionam as abas, quando o programa tem mais de um arquivo.
- Como aparecem os erros (o traceback) e como parar um programa que não termina.
- O que o editor não faz, como funcionam as missões e como rodar o mesmo programa no terminal.
A ideia: uma cozinha de teste dentro da página
Pense numa escola de culinária. O professor explica a receita no quadro, mas a aula só vale a pena quando cada aluno vai para a sua bancada e faz o bolo com as próprias mãos. Se o bolo desanda, tudo bem: a bancada é de treino, e no dia seguinte ela está limpa de novo.
O editor do guia é essa bancada. A receita é o seu programa, e quem "cozinha" é o Python. Cada vez que você clica em Rodar, o editor:
- prepara uma pasta vazia, a
/home/ana(a pasta pessoal da Ana, a usuária das aulas); - grava o seu código num arquivo, o
main.py(e os outros arquivos da caixa, se houver); - roda o programa com o Python, como quem digita
python3 main.pyno terminal; - mostra tudo o que o programa escreveu, e no fim o código de saída (0 quer dizer "terminou bem").
Tudo isso acontece no seu computador, dentro do navegador. O seu código não é enviado para lugar nenhum.
As partes da caixa
Esta é uma caixa livre, sem missão. Clique em ▶ Rodar:
nome = "Ana"
print(f"Olá, {nome}!")
print("Bem-vinda ao Python.")
Na primeira vez, o editor avisa "Carregando o Python (~6 MB, só na primeira vez)…" e mostra uma barra de progresso: o navegador está baixando o Python. Isso leva alguns segundos e só acontece uma vez; depois, o navegador guarda o Python, e cada Rodar leva uma fração de segundo. Em seguida aparece o terminal da caixa, com a resposta. Repare nas partes:
| Parte | O que faz |
|---|---|
📄 main.py | A aba com o nome do arquivo. Os programas em Python ficam em arquivos que terminam em .py. |
| O código | A área onde você digita, com o número de cada linha do lado. Pode apagar, mudar e escrever o que quiser. |
| ▶ Rodar | Roda o programa. Enquanto ele roda, o botão vira ■ Parar. |
| Restaurar | Volta ao código original da caixa. Use quando se perder. |
| Ver solução | Só aparece nas missões. Pergunta antes ("Trocar o seu código pela solução?") e, se você confirmar, põe a resposta no editor. |
ana@notebook:~$ python3 main.py | A primeira linha do terminal: o comando que rodaria este programa num computador de verdade (a usuária ana, no computador notebook). |
Olá, Ana! | O que o programa escreveu com o print ("imprimir", mostrar na tela). |
[código de saída: 0] | Como o programa terminou: 0 = tudo certo; 1 = terminou com um erro. |
Atalhos do teclado
| Tecla | O que faz |
|---|---|
| Ctrl+Enter | Roda o programa, igual ao botão Rodar (no Mac, ⌘+Enter). |
| Enter | Nova linha, já com o mesmo recuo da linha de cima. Depois de uma linha que termina em : (um if, um for, um def), o editor recua mais 4 espaços sozinho. |
| Tab / Shift+Tab | Põe / tira 4 espaços de recuo (com várias linhas selecionadas, em todas). |
| Backspace no recuo | Apaga os 4 espaços de uma vez. |
| Esc | Sai do editor (o Tab volta a andar pela página). |
Experimente agora na caixa de cima: troque "Ana" pelo seu nome e aperte Ctrl+Enter. Depois clique em Restaurar.
Cada Rodar começa do zero
O programa abaixo procura o arquivo diario.txt. Se ele já existe, avisa; senão, cria o arquivo e escreve uma linha nele. Por fim, mostra o que tem na pasta (os.listdir("."), "liste a pasta atual"). Rode duas ou três vezes:
import os
if os.path.exists("diario.txt"):
print("O diário já existia!")
else:
print("Diário novo.")
with open("diario.txt", "a", encoding="utf-8") as arquivo:
arquivo.write("Hoje estudei Python.\n")
print(os.listdir("."))
Todas as vezes ele responde Diário novo. e a pasta tem só ['main.py', 'diario.txt']. Num computador de verdade, a segunda vez diria "O diário já existia!", porque o arquivo ficaria gravado no disco. No editor, cada Rodar ganha uma pasta nova e vazia: os arquivos que o programa criou e as variáveis da vez anterior somem. Não se preocupe com o open e o with agora; eles têm aula própria: Abrindo Arquivos.
Você pode criar, mudar e apagar arquivos à vontade: nada "estraga" os exemplos das outras aulas, e o resultado é sempre o que o texto da aula descreve. A contrapartida é que nada fica guardado entre um Rodar e outro: o programa que grava e o que lê precisam estar no mesmo Rodar.
Quando o programa pergunta: o input()
A função input() ("entrada") faz o programa parar e esperar você digitar uma resposta (aula input(): Lendo o Teclado). Rode a caixa abaixo: o terminal mostra a pergunta e, do lado, um campo piscando. Digite o seu nome e tecle Enter:
nome = input("Qual é o seu nome? ")
print(f"Prazer, {nome}!")
O que você digitou aparece em branco, depois da pergunta, como num terminal de verdade. No campo de digitação valem estas teclas:
| Tecla | O que faz |
|---|---|
| Enter | Envia a linha para o programa. |
| Ctrl+D | Avisa "acabou a entrada" (no Python, o input() dá EOFError). Serve para programas que leem até o fim. |
| Ctrl+C | Para o programa, como o botão ■ Parar. |
Caixas com o campo Entrada
Em algumas caixas a resposta já vem pronta, num campo Entrada ao lado do botão Rodar: uma linha para cada input(). O programa lê dali sem parar, e o terminal mostra cada linha lida logo depois da pergunta. Mude as notas no campo Entrada e rode de novo:
nome = input("Aluna: ")
nota1 = float(input("Nota 1: "))
nota2 = float(input("Nota 2: "))
media = (nota1 + nota2) / 2
print(f"Média de {nome}: {media}")
Numa missão, o guia precisa rodar o seu programa e conferir a resposta sozinho. Com as respostas no campo Entrada, ele sabe exatamente o que o programa vai ler. Nas caixas sem esse campo, quem responde é você, digitando.
Vários arquivos: as abas
Programas maiores se dividem em vários arquivos. Numa caixa com várias abas, clique no nome de cada uma para ver o arquivo. A primeira aba é a que roda (python3 main.py); as outras ficam na mesma pasta, prontas para o programa usar:
import saudacoes
with open("clientes.txt", encoding="utf-8") as arquivo:
for linha in arquivo:
print(saudacoes.bom_dia(linha.strip()))
def bom_dia(nome):
return f"Bom dia, {nome}! O pão saiu agora."
Ana Bia Caio
O main.py usa uma função escrita no saudacoes.py (o import saudacoes traz esse arquivo para o programa; aula Criando seu Módulo) e lê os nomes do clientes.txt. Acrescente um nome na aba clientes.txt, ou mude a frase em saudacoes.py, e rode de novo. O botão Restaurar volta todas as abas ao original.
Quando dá errado
Errar faz parte. Quando o Python não consegue continuar, ele para e escreve um traceback (em inglês, "rastro"): o caminho até o erro, a linha culpada e, na última linha, o nome do erro com uma explicação. No editor ele aparece em vermelho, e o código de saída vira 1. A mensagem é a real do Python e vem em inglês; as aulas traduzem e explicam cada uma. A aula Lendo uma Mensagem de Erro ensina a ler um traceback do começo ao fim.
Rode a caixa:
produtos = ["pão", "leite"]
print("Lista da padaria:")
print(produto)
No terminal da Ana, o mesmo programa (salvo como erro.py) dá a mesma mensagem:
$ python3 erro.py
Lista da padaria:
Traceback (most recent call last):
File "/home/ana/erro.py", line 3, in <module>
print(produto)
^^^^^^^
NameError: name 'produto' is not defined. Did you mean: 'produtos'?
O que aconteceu: a linha 2 rodou (apareceu "Lista da padaria:"); na linha 3 (line 3), o Python não conhece nenhum produto. NameError: name 'produto' is not defined quer dizer "o nome produto não foi definido", e o Python ainda sugere: Did you mean: 'produtos'? ("você quis dizer produtos?"). As setinhas ^^^^^^^ marcam o pedaço com problema.
Como consertar: use o nome exato da variável: print(produtos).
print("Olá, Ana!"
$ python3 sintaxe.py
File "/home/ana/sintaxe.py", line 1
print("Olá, Ana!"
^
SyntaxError: '(' was never closed
O que aconteceu: este erro é diferente: o programa nem começou. Antes de rodar, o Python lê o arquivo inteiro, e aqui ele achou um parêntese aberto ('(') que nunca foi fechado (was never closed). SyntaxError é "erro de escrita": o Python não entendeu o que está escrito. O editor mostra exatamente a mesma mensagem.
Como consertar: feche o parêntese: print("Olá, Ana!").
O laço abaixo soma 1 no contador para sempre (o while True, "enquanto verdadeiro", você aprende na aula while). Rode e, depois de uns segundos, clique em ■ Parar:
contador = 0
print("Contando…")
while True:
contador += 1
O que aconteceu: o editor parou o programa na hora e mostrou ^C e [programa interrompido]. Se você não clicar em Parar, o editor para sozinho depois de 10 segundos rodando, com o aviso "o editor parou o programa: ele rodou mais de 10 segundos sem terminar — laço infinito?". Enquanto isso, a página continua funcionando normalmente: o Python roda separado dela.
No terminal, quem para um programa assim é você, com Ctrl+C. O Python mostra onde estava quando foi interrompido (KeyboardInterrupt, "interrupção pelo teclado"), e o código de saída é 130:
$ python3 laco.py
Contando…
^C
Traceback (most recent call last):
File "/home/ana/laco.py", line 4, in <module>
contador += 1
^^^^^^^^
KeyboardInterrupt
$ echo $?
130
Como consertar: todo laço precisa de um jeito de terminar, por exemplo while contador < 1000:.
O que o editor não faz
O editor roda o Python de verdade, mas ele vive dentro de uma página da internet, e o navegador, por segurança, não deixa uma página mexer no seu computador. Algumas coisas ficam de fora:
| No editor | Por quê, e onde fazer |
|---|---|
| Nada fica salvo entre um Rodar e outro | Cada Rodar ganha uma pasta nova. Para guardar arquivos de verdade, rode no seu computador. |
Sem internet: urllib.request.urlopen(...) dá erro | A página não abre conexões por conta própria. |
Sem outros programas: subprocess.run(["ls"]) dá OSError: [Errno 138] emscripten does not support processes., e os.system("ls") não roda nada | Dentro do navegador não existe um sistema com outros programas. A aula Rodando Outros Programas usa o terminal. |
Sem threads ("linhas de execução" paralelas): RuntimeError: can't start new thread | O asyncio funciona (aula Programação Assíncrona); o que precisa de threads, não. |
Sem pip, venv, tkinter nem turtle (ModuleNotFoundError) | Instalar pacotes e abrir janelas só no computador: aulas pip e Ambientes Virtuais. |
Não tem o modo interativo >>> | O editor roda arquivos inteiros. O >>> está na aula O Modo Interativo. |
| Programa que roda mais de 10 segundos é parado; saída com mais de 2 milhões de letras também | Para a página não travar. Nenhum exemplo do guia chega perto disso. |
A hora é a do seu computador; random sorteia outro número a cada Rodar | É o que eles fazem também no terminal: leem o relógio e sorteiam de novo. |
As missões
Muitas caixas têm uma Missão: uma tarefa escrita em cima do código. Embaixo da caixa fica uma linha de status que confere a sua resposta a cada Rodar:
- Missão em andamento… enquanto ainda não está certo, com uma pista entre parênteses (por exemplo, "a saída ainda não é a esperada" ou "o programa ainda termina com erro");
- ✔ Missão cumprida!, em verde, quando você acerta. Depois de cumprida, ela fica cumprida.
O guia não compara o seu código letra por letra com a resposta: ele roda o seu programa e confere o que ele escreveu. Por isso, quase sempre existe mais de um jeito certo. Às vezes a missão também pede um recurso (como "use um for"), ou um arquivo criado pelo programa, ou até um erro de propósito, para você aprender a reconhecê-lo. Faça a primeira:
Missão: a Ana comprou 3 pães de R$ 1,50 e 2 litros de leite de R$ 9,50. O programa tem um erro: rode, leia a última linha do traceback e conserte. A saída deve terminar com Total: R$ 23.50.
paes = 3 * 1.50
leite = 2 * 9.50
total = paes + leites
print(f"Total: R$ {total:.2f}")
paes = 3 * 1.50
leite = 2 * 9.50
total = paes + leite
print(f"Total: R$ {total:.2f}")
Rodou antes de consertar? Então viu NameError: name 'leites' is not defined. Did you mean: 'leite'?: a variável se chama leite, sem o "s". As missões são feitas para você errar, ler a mensagem e consertar. Se travar de vez, use Ver solução; mas tente antes, e depois de ver a solução, digite-a você mesmo.
O mesmo programa no terminal
O editor é ótimo para aprender, mas no dia a dia o Python roda como um programa no seu computador: o python3, que você usa no terminal (a janela de texto onde se digitam comandos). A aula Instalar o Python mostra como instalá-lo, e Rodando um Programa (.py) ensina o caminho completo. Em resumo:
- copie o código da caixa para um editor de texto e salve com um nome terminado em
.py, na sua pasta pessoal: por exemplo,ola.py; - abra o terminal e digite
python3, um espaço e o nome do arquivo; - o que o programa escreve aparece logo embaixo, como no terminal da caixa.
Nas aulas, o terminal aparece assim, com a usuária ana no computador notebook. O primeiro programa desta página, salvo como ola.py:
$ python3 --version Python 3.14.4 $ python3 ola.py Olá, Ana! Bem-vinda ao Python.
E o programa do input(), salvo como nome.py: no terminal, você digita a resposta na mesma linha da pergunta e tecla Enter:
$ python3 nome.py Qual é o seu nome? Ana Prazer, Ana!
O Python é o mesmo nos dois lugares, então o que você aprende no editor vale no terminal. O que muda é o lugar onde ele roda:
| Assunto | No editor do guia | No terminal (python3 arquivo.py) |
|---|---|---|
| Versão | Python 3.14 (3.14.2) | A do seu computador (nas aulas, 3.14.4, a do Ubuntu 26.04) |
| Arquivos que o programa cria | Somem no próximo Rodar | Ficam gravados no disco |
| Traceback | O mesmo, em vermelho | O mesmo (no Ubuntu, também colorido) |
| Parar um programa | Botão ■ Parar (ou o limite de 10 s); não mostra traceback | Ctrl+C: mostra o KeyboardInterrupt e sai com código 130 |
sys.platform ("em que sistema estou?") | emscripten (o "sistema" do navegador) | linux (ou win32, darwin no Windows e no Mac) |
Internet, outros programas, pip, janelas | Não | Sim |
| Velocidade | Umas 3 ou 4 vezes mais lento (nada que se perceba nos exemplos) | A velocidade normal do computador |
No editor, um arquivo apagado ou sobrescrito volta no próximo Rodar. No terminal, o programa mexe nos seus arquivos de verdade, e não há botão Restaurar. Antes de rodar no seu computador um programa que grava ou apaga arquivos, confira o nome dos arquivos que ele usa.
Exercícios
1. A tecla
Além do botão Rodar, qual combinação de teclas roda o programa da caixa? Escreva no formato Tecla+Tecla.
2. O código de saída
O programa terminou sem nenhum erro. Qual número aparece em [código de saída: ?]?
3. Você rodou um programa que criou o arquivo notas.txt. Depois, rodou de novo um programa que lê notas.txt. O que acontece no editor?
4. O programa ficou rodando sem parar e não escreve mais nada. O que fazer no editor?
Missão final: desta vez, a missão é errar de propósito. Faça o Python responder ZeroDivisionError ("erro de divisão por zero"): troque o número de pessoas para 0 e rode. Leia a última linha do traceback.
conta = 120.00
pessoas = 4
print(f"Cada um paga R$ {conta / pessoas:.2f}")
conta = 120.00
pessoas = 0
print(f"Cada um paga R$ {conta / pessoas:.2f}")
Resumo
- As caixas Experimente rodam o Python 3.14 de verdade no seu navegador. Escreva e clique em ▶ Rodar (ou Ctrl+Enter). Na primeira vez, o editor baixa o Python (~6 MB).
- O terminal da caixa mostra o comando (
python3 main.py), o que o programa escreveu e o código de saída (0 = terminou bem, 1 = erro). - Cada Rodar começa do zero: pasta vazia, variáveis novas. Nada fica guardado.
- O
input()espera você digitar no terminal da caixa; nas caixas com o campo Entrada, as respostas já vêm prontas, uma por linha. - Caixas com várias abas têm vários arquivos na mesma pasta; a primeira aba é a que roda.
- Os erros aparecem em vermelho, com o traceback real do Python, em inglês. ■ Parar interrompe um programa; depois de 10 segundos, o editor para sozinho.
- O editor não tem internet, outros programas, threads,
pipnem janelas: isso fica para o terminal, onde o mesmo programa roda compython3 arquivo.py.