Leia atentamente o código abaixo, que tem como objetivo classificar uma pessoa com base em sua idade. Identifique e explique os erros de sintaxe e o(s) erro(s) de lógica (se houver) presentes no código.
func classificar_idade(idade):
if i < 12
print("Criança")
if idade < 18:
print("Adolescente"
if idade < 30:
print("Jovem adulto")
if idade < 60:
print("Adulto")
else:
print("Idoso")
func classificar_idade(idade):
if i < 12
print("Criança")
if idade < 18:
print("Adolescente"
if idade < 30:
print("Jovem adulto")
if idade < 60:
print("Adulto")
else:
print("Idoso")
Passo 1
O código tenta criar uma função em Python chamada
classificar_idade
que recebe um parâmetro idade
e imprime uma classificação (“Criança”, “Adolescente”, “Jovem adulto”, “Adulto” ou “Idoso”) de acordo com o valor de idade
. O conteúdo aqui envolve sintaxe de definição de função, comandos if
/else
, identação e chamadas a print
, além da lógica de condicionais encadeadas.Passo 2
Erros de sintaxe
- A linha
func \(classificar_idade\)(idade):
usa o identificador errado: em Python a palavra-chave correta é
2. O primeiro
def
, não func
.2. O primeiro
if
está escrito assim:if i < 12
print("Criança")
Falta o dois-pontos (
3. Logo após
:
) no fim de if i < 12
, e a variável i
não foi definida (deveria ser idade
).3. Logo após
if idade < 18:
temosprint("Adolescente"
que omite o parêntese de fechamento
4. A segunda e terceira estruturas
)
.4. A segunda e terceira estruturas
if
estão indentadas de modo ambíguo: o if idade < 30:
e o if idade < 60:
aparecem dentro do bloco do print("Adolescente")
em vez de dentro do bloco do if idade < 18:
. Isso gera erro de identação (Indentações inconsistentes).Passo 3
Erros de lógica
- Mesmo corrigindo a sintaxe, o uso de vários
if
independentes faz com que, por exemplo, quem temidade = 10
imprima “Criança” e também “Adolescente”, “Jovem adulto”, etc., porque não háelif
oureturn
interrompendo as verificações. - A falta de encadeamento correto (
elif
) impede que as faixas etárias sejam mutuamente exclusivas. - O
else: print("Idoso")
está ligado somente aoif idade < 60:
interno, não abrangendo toda a cadeia de verificações, o que foge da lógica esperada de “se não for menor que 60, então é idoso”.
Resposta
Erros de sintaxe
- Uso de
func
em vez dedef
. - Variável incorreta
i
no primeiroif
. - Falta de dois-pontos (
:
) apósif i < 12
. - Parêntese de fechamento ausente em
print("Adolescente"
. - Identação inconsistente (os
if
posteriores não estão corretamente dentro do bloco deif idade < 18:
).
Erros de lógica
- As condições são todas
if
independentes, permitindo múltiplas impressões para uma única faixa de idade. - Deveria usar
elif
para tornar as faixas exclusivas. - O
else
está associado apenas a umif
interno, não cobrindo toda a cadeia de classificação.