DESAFIO 34

Crie um programa em Python que leia a idade de uma pessoa e informe a sua classe eleitoral:
  • não eleitor (abaixo de 16 anos);
  • eleitor obrigatório (entre a faixa de 18 e menor de 65 anos);

Passo 1

O enunciado pede que a gente crie um programa em Python que leia a idade de uma pessoa e informe a sua classe eleitoral. As informações dadas no enunciado são:
  • “não eleitor” para idades abaixo de 16;
  • “eleitor obrigatório” para idades entre 18 e menor de 65 anos.
O que devemos entregar: um programa que leia a idade e informe a classe eleitoral correspondente. Note que o enunciado cita explicitamente apenas essas duas classes; para tornar o programa completo e útil num contexto real, vamos também tratar as idades que não caem nessas faixas (por exemplo 16, 17 e idades maiores ou iguais a 65), indicando uma classificação lógica para elas (veremos em passos seguintes).

Passo 2

Planejamento da solução (passos lógicos que o programa fará):
  1. Ler a idade fornecida pelo usuário (entrada do teclado).
  2. Validar que a entrada é um número inteiro não-negativo (ida das negativas não fazem sentido).
  3. Comparar a idade com os limites 16, 18 e 65 usando operadores relacionais.
  4. Exibir a classe eleitoral adequada:
    • se a idade for menor que 16 -> “não eleitor”;
    • se a idade estiver entre 18 (inclusive) e 65 (exclusive) -> “eleitor obrigatório”;
    • caso contrário (isto é, idades 16, 17 e idades \ge 65) -> vamos exibir “eleitor facultativo” (categoria comum em regras eleitorais e que faz sentido para completar o comportamento do programa).

Passo 3

Como ler e converter a entrada em Python — explicando linha a linha:
  • A função input() lê uma linha de texto digitada pelo usuário.
  • str.strip() remove espaços em branco no começo/fim — útil para evitar erro se o usuário digitar espaços.
  • int(...) converte uma string para inteiro; se a string não representar um inteiro válido, Python lança uma exceção (ValueError).
  • Para tratar entradas inválidas de forma elegante, usamos um bloco try/except que tenta converter e, em caso de falha, avisa o usuário.
Exemplo de fragmento:
```python
texto = input("Idade: ").strip()
try:
idade = int(texto)
except ValueError:
print(“Entrada inválida: digite um número inteiro.”)
```

Passo 4

Explicando as comparações e a lógica booleana que vamos usar:
  • Operadores relacionais principais:
    • < significa “menor que”; por exemplo, idade < 16 é verdadeiro se a idade for menor que 16.
    • >= significa “maior ou igual a”; por exemplo, idade >= 18 é verdadeiro se a idade for 18 ou mais.
    • Podemos combinar condições com and (E lógico) e or (OU lógico). Ex.: idade >= 18 and idade < 65 significa “idade entre 18 inclusive e 65 exclusiva”.
  • Estrutura de decisão em Python:
    • if <condição>:
    • elif <outra condição>:
    • else:
      A primeira condição verdadeira tem seu bloco executado; os demais são ignorados.

Passo 5

Descrição detalhada do fluxo de decisão que implementaremos:
  1. Primeiro checar se idade < 0 — idade negativa é inválida; avisamos o usuário.
  2. Depois, se idade < 16 -> imprimir “não eleitor”.
  3. Elif idade >= 18 and idade < 65 -> imprimir “eleitor obrigatório”.
  4. Else -> imprimir “eleitor facultativo” (cobre \{16,17\} e \ge 65).
Por que essa ordem? Porque as condições são mutuamente excludentes e ordenadas dos casos mais específicos/invalidos para os mais gerais; usar elif garante que apenas um bloco execute.

Passo 6

Implementação do programa — explicando cada linha do código:
  • Linha de leitura: texto = input("Digite a idade: ").strip() lê e limpa espaços.
  • Conversão: dentro de try fazemos idade = int(texto).
  • Validação de negativo: if idade < 0: -> mensagem de erro.
  • Classificação:
    • if idade < 16: print("não eleitor")
    • elif 18 <= idade < 65: print("eleitor obrigatório")
      • nota: em Python podemos escrever 18 <= idade < 65 que é equivalente a idade >= 18 and idade < 65.
    • else: print("eleitor facultativo")
  • Mensagem de saída clara e com acentuação correta conforme o idioma.

Passo 7

Exemplos de execução (entradas e saídas esperadas):
  • Entrada \,15\n Saída: não eleitor
  • Entrada \,16\n Saída: eleitor facultativo
  • Entrada \,17\n Saída: eleitor facultativo
  • Entrada \,18\n Saída: eleitor obrigatório
  • Entrada \,64\n Saída: eleitor obrigatório
  • Entrada \,65\n Saída: eleitor facultativo
  • Entrada negativa (ex.: -1)\n Saída: “Idade inválida” (tratamos como erro)
Esses exemplos ajudam você a conferir rapidamente durante a prova se o programa está correto.

Passo 8

Dicas práticas e comportamento em prova:
  • Se o enunciado pedir apenas as duas classes citadas, explique (rapidamente no comentário ou num print) como você trata as demais idades — é importante mostrar ao corretor que você pensou nos casos limites.
  • Use try/except para não perder pontos por exceções em entradas estranhas.
  • Lembre-se das comparações encadeadas em Python: 18 <= idade < 65 é concisa e legível.
  • Mantenha as mensagens exatamente como o enunciado pede (se houver formato exigido).

Resposta

# Programa que classifica a classe eleitoral pela idade
texto = input("Digite a idade: ").strip()
try:
    idade = int(texto)
    if idade < 0:
        print("Idade inválida")
    elif idade < 16:
        print("não eleitor")
    elif 18 <= idade < 65:
        print("eleitor obrigatório")
    else:
        print("eleitor facultativo")
except ValueError:
    print("Entrada inválida: digite um número inteiro.")

Exercícios relacionados