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
ifindependentes faz com que, por exemplo, quem temidade = 10imprima “Criança” e também “Adolescente”, “Jovem adulto”, etc., porque não háelifoureturninterrompendo 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
funcem vez dedef. - Variável incorreta
ino primeiroif. - Falta de dois-pontos (
:) apósif i < 12. - Parêntese de fechamento ausente em
print("Adolescente". - Identação inconsistente (os
ifposteriores não estão corretamente dentro do bloco deif idade < 18:).
Erros de lógica
- As condições são todas
ifindependentes, permitindo múltiplas impressões para uma única faixa de idade. - Deveria usar
elifpara tornar as faixas exclusivas. - O
elseestá associado apenas a umifinterno, não cobrindo toda a cadeia de classificação.