почему не работает несколько elif в python

Рейтинг: 0Ответов: 1Опубликовано: 12.07.2023

я делаю программу для того, чтобы узнать свой ИМТ вот код:

print(
    "For women: Ideal weight = Height (in centimeters) - 110. For men: Ideal weight = Height (in centimeters) - 100."
)

x = 16, 17, 18
restart = True

while restart:
    male = input("Enter your male: ")

    if male.upper() == "MALE":
        weight = float(input("Enter your weight: "))
        height = float(input("Enter your height: "))
        height *= height
        weight /= height
        print(weight)


        if weight <= 16:
            print("You are severely underweight")#вот этот работает? а все другие нет

        elif weight == 16 or 17 or 18:
            print("You are underweight (deficit)")

        elif weight == 19 or 20 or 21 or 22 or 23 or 24 or 25:
            print("You have a normal weight")
        
        elif weight == 26 or 27 or 28 or 29 or 30:
            print("You are overweight (pre-obesity condition)")
            
        elif weight == 31 or 32 or 33 or 34 or 35:
            print("you have obesity of the 1st degree")

    if male.upper() == "FEMALE":
        weight = float(input("Enter your weight: "))
        height = float(input("Enter your height: "))
        height *= height
        weight /= height
        print(weight) 

и как раз первый elif рвботает, а все остальные нет, что делать?

Ответы

▲ 1Принят

В вашем коде много ошибок, одна из них - функция вычисления коэффициента веса и роста, в вашем случае ее значения всегда меньше единицы, поэтому срабатывает всегда первое условие, затем остальные условия не будут работать так как при исправленной функции результат может быть не ровно целым числом таким как 17, 18 ... 35, а может быть напримемер 25.456, что уже не даст сработать условию. вот исправленный код, возможно я не так понял вашу формулу, но с ней явно что то не то, чтобы получить из нее единицу, вес человека должен быть равен его росту в квадрате, что на мой взгляд недостижимо.

print(
    "For women: Ideal weight = Height (in centimeters) - 110. For men: Ideal weight = Height (in centimeters) - 100."
)

restart = True

while restart:
    sex = input("Enter your sex: ")

    if sex.upper() == "MALE":
        weight = float(input("Enter your weight: "))
        height = float(input("Enter your height: "))
        coef = weight / height
        print(coef)


        if 16.0 < coef <= 18.0:
            print("You are underweight (deficit)")

        elif 18.0 < coef <= 25.0:
            print("You have a normal weight")
        
        elif 25.0 < coef <= 30.0:
            print("You are overweight (pre-obesity condition)")
            
        elif 30.0 < coef < 35.0:
            print("you have obesity of the 1st degree")
            
        elif coef <= 16.0:
            print("You are severely underweight")

Я не знаю, какая точная формула для вычисления ИМТ, так что можете поменять на свою, но она должна выдавать результат в диапазоне от 0 до 35 не включая 35, либо можете поменять значения в условиях