Escreva um algoritmo que leia a idade de um atleta e escreva na tela em que categoria ele se enquadra, seguindo a tabela abaixo: Faixa Etária Categoria de 5 a 10 anos infantil de 11 a 17 anos juvenil de 18 a 30 anos profissional acima de 30 anos sênior
Soluções para a tarefa
Respondido por
0
Faixa Etária........... Categoria
de 5 a 10 anos........ infantil
de 11 a 17 anos...... juvenil
de 18 a 30 anos...... profissional
acima de 30 anos... sênior
Essa é a tabela
Verificando-a, fica certificado que nenhuma faixa sobrepóe a outra, ou seja, não tem como uma pessoa pertencer a mais de uma faixa
Então temos várias maneiras de fazer esse programa. A maneira mais burral seria fazer um ninho de if's assim
if idade >= 5 and idade <= 10 then categoria = "Infantil"
elseif idade >= 11 and idade <= 17 then categoria = "juvenil"
elseif idade >= 18 and idade <= 30 then categoria = "profissional"
elseif idade >= 30 then categoria = "senior"
Totalmente funcional.
Só que tem um problema nessa abordagem. Se houve alguma mudança de faixa, adiçao de alguma categoria, vai ter que mexer no programa e no ninho de if's. Ninhos de if's são ruins e devem ser evitados. As vezes ... nao tem jeito. Podendo evitá-lo, evite-os. No caso, dá para evitar e o programa fica muito mais legal.
Uma forma mais inteligente é guardar as faixas numa tabela onde só precisamos armazenar o valor da idade máxima, que no caso seriam várias idades máximas uma para cada faixa, assim
até 10 anos
até 18 anos
até 30 anos
Aí temos duas situações ... E como fica a faixa de quem tem mais de 30 ?
E como fica a faixa de quem tem MENOS de 5 anos ?
No enunciado ele deixa implícito que tem uma faixa de menos de 5 anos que nao é aceita
E a faixa de mais de 30 anos pode ser colocada como uma faixa com limite superior de 150 anos .. (ninguem vive tanto)
Então podemos criar as faixas assim
menor de 5 anos -> fora da categoria
menor de 10 anos -> infantil
menor de 18 anos -> juvenil
menor de 30 anos -> profissional
menor de 150 anos -> senior
Ou seja, adicionamos mais uma faixa no início e ajustamos a última faixa
Observe, todas as faixas agora sao facilmente definidas com um IF só, idade menor que a idade máxima
podemos colocar num vetor assim
limites = [ 5, 10, 18, 30, 150 ]
faixas = [ 'inválida', 'infantil', 'juvenil', 'profissional', 'senior']
No primeiro vetor temos os limites
no segundo vetor temos o nome da faixa
aí podemos obter a idade do atleta e definir em que faixa ele se enquadra
idade = int(input('Informe a idade do atleta'))
faixa = 0
while limites[faixa] < idade :
faixa += 1
print(faixas[faixa])
vamos testar ?
https://repl.it/@bokomoko/atletas-e-faixas-etarias
de 5 a 10 anos........ infantil
de 11 a 17 anos...... juvenil
de 18 a 30 anos...... profissional
acima de 30 anos... sênior
Essa é a tabela
Verificando-a, fica certificado que nenhuma faixa sobrepóe a outra, ou seja, não tem como uma pessoa pertencer a mais de uma faixa
Então temos várias maneiras de fazer esse programa. A maneira mais burral seria fazer um ninho de if's assim
if idade >= 5 and idade <= 10 then categoria = "Infantil"
elseif idade >= 11 and idade <= 17 then categoria = "juvenil"
elseif idade >= 18 and idade <= 30 then categoria = "profissional"
elseif idade >= 30 then categoria = "senior"
Totalmente funcional.
Só que tem um problema nessa abordagem. Se houve alguma mudança de faixa, adiçao de alguma categoria, vai ter que mexer no programa e no ninho de if's. Ninhos de if's são ruins e devem ser evitados. As vezes ... nao tem jeito. Podendo evitá-lo, evite-os. No caso, dá para evitar e o programa fica muito mais legal.
Uma forma mais inteligente é guardar as faixas numa tabela onde só precisamos armazenar o valor da idade máxima, que no caso seriam várias idades máximas uma para cada faixa, assim
até 10 anos
até 18 anos
até 30 anos
Aí temos duas situações ... E como fica a faixa de quem tem mais de 30 ?
E como fica a faixa de quem tem MENOS de 5 anos ?
No enunciado ele deixa implícito que tem uma faixa de menos de 5 anos que nao é aceita
E a faixa de mais de 30 anos pode ser colocada como uma faixa com limite superior de 150 anos .. (ninguem vive tanto)
Então podemos criar as faixas assim
menor de 5 anos -> fora da categoria
menor de 10 anos -> infantil
menor de 18 anos -> juvenil
menor de 30 anos -> profissional
menor de 150 anos -> senior
Ou seja, adicionamos mais uma faixa no início e ajustamos a última faixa
Observe, todas as faixas agora sao facilmente definidas com um IF só, idade menor que a idade máxima
podemos colocar num vetor assim
limites = [ 5, 10, 18, 30, 150 ]
faixas = [ 'inválida', 'infantil', 'juvenil', 'profissional', 'senior']
No primeiro vetor temos os limites
no segundo vetor temos o nome da faixa
aí podemos obter a idade do atleta e definir em que faixa ele se enquadra
idade = int(input('Informe a idade do atleta'))
faixa = 0
while limites[faixa] < idade :
faixa += 1
print(faixas[faixa])
vamos testar ?
https://repl.it/@bokomoko/atletas-e-faixas-etarias
Perguntas interessantes
Geografia,
9 meses atrás
Português,
9 meses atrás
Matemática,
9 meses atrás
Matemática,
1 ano atrás
Matemática,
1 ano atrás
Inglês,
1 ano atrás