[2,0] 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")

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
  1. A linha
func \(classificar_idade\)(idade):
usa o identificador errado: em Python a palavra-chave correta é def, não func.
2. O primeiro if está escrito assim:
if i < 12
print("Criança")
Falta o dois-pontos (:) 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: temos
print("Adolescente"
que omite o parêntese de fechamento ).
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
  1. Mesmo corrigindo a sintaxe, o uso de vários if independentes faz com que, por exemplo, quem tem idade = 10 imprima “Criança” e também “Adolescente”, “Jovem adulto”, etc., porque não há elif ou return interrompendo as verificações.
  2. A falta de encadeamento correto (elif) impede que as faixas etárias sejam mutuamente exclusivas.
  3. O else: print("Idoso") está ligado somente ao if 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 de def.
  • Variável incorreta i no primeiro if.
  • Falta de dois-pontos (:) após if i < 12.
  • Parêntese de fechamento ausente em print("Adolescente".
  • Identação inconsistente (os if posteriores não estão corretamente dentro do bloco de if 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 exclu­sivas.
  • O else está associado apenas a um if interno, não cobrindo toda a cadeia de classificação.

Exercícios relacionados