Lab04 - Erros comuns
Ixiii... Deu Erro! e agora?¶
A Importância de Interpretar Erros no Python
Programar é uma atividade desafiadora. Não importa o seu nível de conhecimento, inevitavelmente encontrará erros em seu código.
No entanto, esses erros não são simplesmente obstáculos; eles são oportunidades valiosas de aprendizado. Interpretar erros em Python é uma habilidade crucial por várias razões:
Diagnóstico Rápido: Compreender a mensagem de erro acelera o processo de identificação do problema. Em vez de vasculhar linhas e linhas de código, você pode ir direto ao ponto problemático.Desenvolvimento de Solução: Uma interpretação precisa do erro fornece insights sobre como corrigi-lo. Isso economiza tempo e reduz afrustraçãoassociada à tentativa e erro.Aprendizado Profundo: Cada erro é uma lição. Ao entender por que um erro ocorreu, você internaliza princípios fundamentais de programação e evita cometer o mesmo erro no futuro.Confiança: Encarar e superar erros fortalece sua resiliência e confiança como programador. Você se sente mais preparado para enfrentar desafios mais complexos, sabendo que pode decifrar e corrigir problemas que surgirem.
Tipos Comuns de Erros em Python¶
Erros de Sintaxe (Syntax Errors): Estes são os erros mais básicos e geralmente mais fáceis de identificar. Eles ocorrem quando o Python não consegue entender seu código. Pode ser algo simples, como esquecer um:ao definir uma função ou não fechar um parêntese). A boa notícia é que o interpretador Python geralmente aponta exatamente onde o erro ocorreu, tornando mais fácil sua correção.Erros de Runtime (Runtime Errors): Estes erros são um pouco mais insidiosos, pois só aparecem quando você executa seu programa. Isso inclui coisas como tentardividir por zero, tentar acessar um arquivo que não existe, oureferenciar uma variável que não foi definida. Ao contrário dos erros de sintaxe, os erros de runtime podem não ser tão diretos para identificar, pois podem depender de condições específicas dentro do programa.Erros Semânticos (Semantic Errors): Estes são os mais desafiadores de todos. Seu programa é executado sem erros visíveis e não retorna nenhuma mensagem de erro. No entanto, ele não faz o que você esperava. O desafio aqui é que o interpretador Python não pode ajudá-lo, pois tecnicamente, tudo está "correto". Estes erros exigem uma análise profunda da lógica e do fluxo do programa. A depuração passo a passo e a revisão do código são ferramentas valiosas para identificar onde as coisas deram errado.
Vamos praticar um pouco¶
print('Olá, mundo!")
File "<ipython-input-30-15a41a3ccf62>", line 1 print('Olá, mundo!") ^ SyntaxError: EOL while scanning string literal
# Solução
print("Olá mundo"
File "<ipython-input-1-da27efeb691f>", line 1 print("Olá mundo" ^ SyntaxError: unexpected EOF while parsing
# Solução
7casas = 4
File "<ipython-input-37-c269be13d752>", line 1 7casas = 4 ^ SyntaxError: invalid syntax
# Solução
str(input("digite o primeiro numero")
File "<ipython-input-38-a91b619cd92b>", line 1 str(input("digite o primeiro numero") ^ SyntaxError: unexpected EOF while parsing
# Solução
a = str(input("digite o primeiro numero")) # 3
b = str(input("digite o segundo numero")) # 3
print(a+b)
digite o primeiro numero3 digite o segundo numero3 33
def minha_funcao()
return "Olá, mundo!"
File "<ipython-input-35-af16dcebc17d>", line 1 def minha_funcao() ^ SyntaxError: invalid syntax
# Solução
idade = 18
if idade = 18:
print("Maior de idade")
File "<ipython-input-36-274b47e24894>", line 2 if idade = 18: ^ SyntaxError: invalid syntax
# Solução
def saudacao():
print("Olá!")
File "<ipython-input-45-3ca3bbbc0d2b>", line 2 print("Olá!") ^ IndentationError: expected an indented block
# Solução
nome = "João"
print(Nome)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-3-0a0afa2a6809> in <module> 1 nome = "João" ----> 2 print(Nome) NameError: name 'Nome' is not defined
# Solução
idade = "25"
total = idade + 5
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-31-021ee738685d> in <module> 1 idade = "25" ----> 2 total = idade + 5 TypeError: can only concatenate str (not "int") to str
# Solução
resultado = 10 / 0
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-4-605c3bec262d> in <module> ----> 1 resultado = 10 / 0 ZeroDivisionError: division by zero
# Solução
import mathh
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-5-dafd3c5d3188> in <module> ----> 1 import mathh ModuleNotFoundError: No module named 'mathh'
# Solução
def somar(a, b):
return a + b
resultado = somar(5)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-9-072ac009b981> in <module> 2 return a + b 3 ----> 4 resultado = somar(5) TypeError: somar() missing 1 required positional argument: 'b'
# Solução
int("python")
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-11-9ae652162590> in <module> ----> 1 int("python") ValueError: invalid literal for int() with base 10: 'python'
# Solução
idade = 25
print("Minha idade é: " + idade)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-12-07d6225f6874> in <module> 1 idade = 25 ----> 2 print("Minha idade é: " + idade) TypeError: can only concatenate str (not "int") to str
# Solução
resultado = multiplica(5, 2)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-13-205222be5016> in <module> ----> 1 resultado = multiplica(5, 2) NameError: name 'multiplica' is not defined
# Solução
soma(a, b):
return a + b
File "<ipython-input-16-53b9abc9acb8>", line 1 soma(a, b): ^ SyntaxError: invalid syntax
# Solução: Esquecer de definir uma função com def
idade = 18
if idade = 18:
idade = 12
print(f"Você tem {idade} anos.")
File "<ipython-input-17-5ad9d64caab5>", line 2 if idade = 18: ^ SyntaxError: invalid syntax
# solução: Esquecer o operador de comparação em uma estrutura condicional
valor = 5
if valor = 10:
valor = 20
File "<ipython-input-53-59ec2c2e20de>", line 2 if valor = 10: ^ SyntaxError: invalid syntax
# solução: Erro de operador de atribuição em vez de comparação
def soma(a, b):
resultado = a + b
print(soma(5, 3))
None
# solução Esquecer de retornar um valor em uma função que deveria ter retorno
if add == 2:
add += i
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-56-e57a47ae4057> in <module> ----> 1 if add == 2: 2 add += i NameError: name 'add' is not defined
# solução: Esquecer de iniciar uma variável antes de usá-la
resto = 10 % 0
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-24-8f7f0e98b1d2> in <module> ----> 1 resto = 10 % 0 ZeroDivisionError: integer division or modulo by zero
# solução:
10/0
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-64-e574edb36883> in <module> ----> 1 10/0 ZeroDivisionError: division by zero
# solução:
def verificar_igualdade(a, b):
return a = b
verificar_igualdade(2, 3)
File "<ipython-input-68-8515e9477153>", line 2 return a = b ^ SyntaxError: invalid syntax
# solução
def calcular_media(a, b):
return (a + b) / 3
calcular_media(8,8)
5.333333333333333
#solução