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.

Você vai aprender
  • 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:

  1. prepara uma pasta vazia, a /home/ana (a pasta pessoal da Ana, a usuária das aulas);
  2. grava o seu código num arquivo, o main.py (e os outros arquivos da caixa, se houver);
  3. roda o programa com o Python, como quem digita python3 main.py no terminal;
  4. 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:

ParteO que faz
📄 main.pyA aba com o nome do arquivo. Os programas em Python ficam em arquivos que terminam em .py.
O códigoA área onde você digita, com o número de cada linha do lado. Pode apagar, mudar e escrever o que quiser.
▶ RodarRoda o programa. Enquanto ele roda, o botão vira ■ Parar.
RestaurarVolta ao código original da caixa. Use quando se perder.
Ver soluçãoSó 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.pyA 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

TeclaO que faz
Ctrl+EnterRoda o programa, igual ao botão Rodar (no Mac, ⌘+Enter).
EnterNova 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+TabPõe / tira 4 espaços de recuo (com várias linhas selecionadas, em todas).
Backspace no recuoApaga os 4 espaços de uma vez.
EscSai 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.

Por que isso é bom

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:

TeclaO que faz
EnterEnvia a linha para o programa.
Ctrl+DAvisa "acabou a entrada" (no Python, o input() dá EOFError). Serve para programas que leem até o fim.
Ctrl+CPara 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}")
Por que algumas caixas usam o campo Entrada

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.

Um nome escrito errado

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

Um parêntese sem fechar
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!").

Um programa que não termina nunca

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 editorPor quê, e onde fazer
Nada fica salvo entre um Rodar e outroCada Rodar ganha uma pasta nova. Para guardar arquivos de verdade, rode no seu computador.
Sem internet: urllib.request.urlopen(...) dá erroA 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 nadaDentro 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 threadO 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émPara 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:

  1. 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;
  2. abra o terminal e digite python3, um espaço e o nome do arquivo;
  3. 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:

AssuntoNo editor do guiaNo terminal (python3 arquivo.py)
VersãoPython 3.14 (3.14.2)A do seu computador (nas aulas, 3.14.4, a do Ubuntu 26.04)
Arquivos que o programa criaSomem no próximo RodarFicam gravados no disco
TracebackO mesmo, em vermelhoO mesmo (no Ubuntu, também colorido)
Parar um programaBotão ■ Parar (ou o limite de 10 s); não mostra tracebackCtrl+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, janelasNãoSim
VelocidadeUmas 3 ou 4 vezes mais lento (nada que se perceba nos exemplos)A velocidade normal do computador
No terminal, apagar é para valer

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, pip nem janelas: isso fica para o terminal, onde o mesmo programa roda com python3 arquivo.py.