Oii, Luiz! Tudo bem?
Essa é uma dúvida excelente e acontece muito porque a lógica que usamos na cabeça ("idade maior que 0 e menor que 12") precisa ser escrita de um jeitinho específico para o Python entender corretamente.
O que está acontecendo:
Quando você escreve if idade > 0 < 12, o Python interpreta isso como uma comparação encadeada, mas de uma forma um pouco diferente da matemática tradicional. Ele avalia:
- A idade é maior que 0? (Se você digitar 20, a resposta é Sim).
- O número 0 é menor que 12? (A resposta é sempre Sim).
Como as duas coisas são verdadeiras, ele entra no primeiro if e para por ali, ignorando o resto. Por isso, qualquer número positivo que você digita acaba caindo como "Criança".
Como resolver:
Pra fixar, precisamos deixar a variável idade no meio da comparação (para dizer que ela está entre os valores) ou usar o operador and. Além disso, fiz um pequeno ajuste para incluir o número 12 e o 18, que ficariam de fora na sua lógica original (se a pessoa tivesse exatamente 12 anos, o código não saberia o que fazer).
Veja como fica o código ajustado:
idade = int(input('Digite a sua idade: '))
# Aqui dizemos: se 0 for menor que a idade E a idade for menor ou igual a 12
if 0 < idade <= 12:
print('Você é uma criança')
# Aqui: se 12 for menor que a idade E a idade for menor que 18
elif 12 < idade < 18:
print('Você é um adolescente')
# Aqui pegamos 18 ou mais
elif idade >= 18:
print('Você é um adulto')
Tente rodar com essas alterações e veja se agora ele classifica certinho todas as idades. Qualquer coisa, é só chamar!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!