1
resposta

Exercícios 09.2 - Hora da prática: condicionais

Porque se eu usar "elif 13 < idade <= 18:" o código imprime "Adulto ... anos" e não "Jovem... anos"?

qual_sua_idade = input('Qual sua idade? ')
idade = int(qual_sua_idade)

if 0 < idade <= 12:
    print(f'Criança de {idade} anos')
elif 0 < idade <= 18:
    print(f'Jovem de {idade} anos')
else:
    print(f'Adulto de {idade} anos')

Obs.: estou iniciando na programação.

1 resposta

Boa tarde,

Temos dois problemas em seu script:

1 - os critérios definidos no if e no elif precisam ser ajustados, pois você está fazendo duas verificações para um mesmo intervalo numérico. O correto seria assim:

idade entre 0 a 12 -> criança
idade entre 13 a 18 -> jovem
qualquer outro número informado -> adulto

Ajuste para o exemplo fornecido na aula e dará certo:

idade = int(input("Digite sua idade: "))
if 0 < idade <= 12:
    print("Criança")
elif 12 < idade < 18:
    print("Adolescente")
elif idade >= 18:
    print("Adulto")
else: 
    print("Valor inválido!")

2 - Ainda sobre a condição validada no elif, confesso que não entendi muito bem quando fiz o exercício, então resolvi dar uma pesquisada vendo que sua dúvida era a mesma minha.

Dando uma olhada na documentação do Python (https://docs.python.org/pt-br/3/reference/expressions.html, seção 6.10 - Comparações) temos o seguinte:

"As comparações podem ser encadeadas arbitrariamente, por exemplo, x < y <= z é equivalente a x < y and y <= z, exceto que y é avaliado apenas uma vez (mas em ambos os casos z não é avaliado quando x < y é considerado falso)."

Vamos imaginar que no seu exemplo você capture do usuário o número 12. 13 é menor do que 12? Não! Então a segunda comparação do elif, que seria verificar se a idade é menor ou igual 18 nem será feita:

13 < idade <= 18

Você pode testar se o Python retorna True ou False em uma operação dessa forma: print(13 < idade)

Para facilitar seu entendimento, crie um script bem simples, como o exemplo abaixo, e digite um número menor ou igual a 13. Aí entenderá melhor:

qual_sua_idade = input('Qual sua idade? ')
idade = int(qual_sua_idade)

if 13 < idade <= 18:
    print(f'Idade {idade}')

Espero ter ajudado.