Errors & testing · Erros e testes
Three kinds of error
- A syntax error breaks the rules of Python, so the code will not run.
- A runtime error crashes the program while it is running.
- A logic error runs fine but gives the wrong answer.
Três tipos de erro
- Um erro de sintaxe viola as regras do Python, então o código não roda.
- Um erro de tempo de execução travou o programa enquanto ele roda.
- Um erro de lógica roda bem, mas dá a resposta errada.
Syntax errors
- These are typos: a missing
:, an unclosed quote, a wrong indent. - Python refuses to start and shows you the line.
- Fix the spelling or punctuation, then run again.
Erros de sintaxe
- São erros de digitação: falta de
:, aspas não fechadas, indentação errada. - Python se recusa a começar e mostra a linha.
- Corrija a grafia ou pontuação, depois rode novamente.
Runtime errors
- The code starts, then hits something it cannot do.
- Examples:
10 / 0, orint("hello"), or reading past the end of a list. - The program stops at that line with a message.
Erros de tempo de execução
- O código começa, depois encontra algo que não consegue fazer.
- Exemplos:
10 / 0, ouint("hello"), ou ler além do fim de uma lista. - O programa para naquela linha com uma mensagem.
Logic errors
- The program runs to the end but the result is wrong.
- Example: using
-where you meant+, or stopping a loop too early. - These are the hardest to find — the computer did exactly what you wrote.
Erros de lógica
- O programa roda até o fim, mas o resultado está errado.
- Exemplo: usar
-onde queria+, ou parar um loop cedo demais. - Estes são os mais difíceis de encontrar — o computador fez exatamente o que você escreveu.
Read the traceback
- When a program crashes, Python prints a traceback.
- Read the last line first: it names the error and what went wrong.
- The line number tells you where to look.
Ler o traceback
- Quando um programa travou, Python imprime um traceback.
- Leia a última linha primeiro: ela nomeia o erro e o que deu errado.
- O número da linha diz onde procurar.
Traceback (most recent call last):
File "<program>", line 2, in <module>
print(10 / 0)
ZeroDivisionError: division by zero
Test with chosen data
- Do not trust code until you have tested it.
- Use normal data, boundary data (like
0), and extreme data. - Check each answer against what you worked out by hand.
Testar com dados escolhidos
- Não confie no código até tê-lo testado.
- Use dados normais, dados de fronteira (como
0) e dados extremos. - Verifique cada resposta contra o que calculou manualmente.
def square(n):
return n * n
print(square(3)) # normal -> 9
print(square(0)) # boundary -> 0
print(square(-2)) # negative -> 4
Common mistakes
- A syntax error stops the program before it runs, so fix those first.
- Catch a specific error with
except ValueError:, not a bareexcept:. - Test the tricky cases (empty, zero, the biggest), not just the easy one.
Erros comuns
- Um erro de sintaxe para o programa antes de rodar, então corrija esses primeiro.
- Capture um erro específico com
except ValueError:, não umexcept:nu. - Teste casos difíceis (vazio, zero, o maior), não apenas o fácil.
Now you try
- Each task has a logic error to fix, or a crash to prevent.
- Press Check answer to test your fix against several cases.
Agora você tenta
- Cada tarefa tem um erro de lógica para corrigir, ou um crash para prevenir.
- Pressione Check answer para testar sua correção contra vários casos.
Find and fix a bug · Encontrar e corrigir um bug
Testing is a cycle: run it, see what's wrong, fix, run again. · Testes são um ciclo: execute, veja o erro, corrija, execute novamente.
This function should add · adicionar a and · e b, but it has a logic error — it subtracts. Fix it so it returns the sum. · Esta função deveria somar a e b, mas tem um erro lógico — subtrai. Corrija para retornar a soma.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
sum_to(n) should return 1 + 2 + ... + n, but it stops one number too early (an off-by-one logic error). Fix the range so it includes n. · sum_to(n) deveria retornar 1 + 2 + ... + n, mas para um número cedo demais (erro de lógica off-by-one). Corrija o range para incluir n.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
Write safe_divide(a, b) that returns a / b, but prevents a runtime crash: if b is 0, return 0 instead. · Escreva safe_divide(a, b) que retorna a / b, mas evite um crash de tempo de execução: se b for 0, retorne 0 em vez disso.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
average(nums) has two bugs: it divides by the wrong number, and it crashes on an empty list. Fix both, so average([2, 4, 6]) is 4 and · e average([]) is 0. · average(nums) tem dois bugs: divide pelo número errado e crasha em lista vazia. Corrija ambos, para que average([2, 4, 6]) seja 4 e average([]) seja 0.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.