В чем ошибка? категории 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
→ Ссылка
- Очевидно, что границы удовлетворяют обоим условиям.
- Нижнюю границу вообще не надо проверять - вместо этого надо использовать elif.
Используй отладчик.
Автор решения: 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() в подобных случаях в документации.