В чем ошибка? категории if python

Выводит сразу несколько категорий возрастов, например ввел 96 лет: мне выводит: молодость зрелость и только потом старость

age = int(input())
if age <= 13:
    print("детство")
if age >= 13 <= 24:
    print("молодость")
if age >= 25 <= 59:
    print("зрелость")
if age >= 91:
    print("старость")

Ответы (4 шт):

Автор решения: Qwertiy
  1. Очевидно, что границы удовлетворяют обоим условиям.
  2. Нижнюю границу вообще не надо проверять - вместо этого надо использовать elif.
  3. Используй отладчик.
→ Ссылка
Автор решения: vp_arth

Если почти ничего не менять, можно сделать вот так:

age = int(input())
if age <= 13:
    print("детство")
if 13 < age <= 24: # Это эквивалентно 13 < age and age <= 24
    print("молодость")
if 24 < age <= 59:
    print("зрелость")
if 59 < age <= 90:
    pass # ?
if 90 < age:
    print("старость")

Но очевидно, что можно не проверять уже проверенные условия:

age = int(input())
if age <= 13:
    print("детство")
elif age <= 24:
    print("молодость")
elif age <= 59:
    print("зрелость")
elif age <= 90:
    pass # ?
else:
    print("старость")
→ Ссылка
Автор решения: Zhihar
if age >= 25 <= 59:

происходит следующее:

если age >= 25 и если 25 <= 59

очевидно, что при age >= 25 эти 2 условия выполняются всегда и соответственно условия ниже уже не выполняются

правильнее было бы написать

if 25 <= age <= 59:

ниже аналогично

→ Ссылка
Автор решения: Vasyl Kolomiets

Ошибку вам уже нашли,а это так, для альтернативы

from bisect import bisect

def grade(age):
    breakpoints=[14, 25, 60, 91, 150]
    grades=["детство","молодость","зрелость","старость", "пророк"]
    return grades[bisect(breakpoints, age)]

for age in range(1,150,7):
    print(f"{age} - это {grade(age)}")

Подробности применения bisect() в подобных случаях в документации.

→ Ссылка