Почему здесь не правильный вывод?

Почему здесь при вводе 3, выводится "Опасная температура. Сильное переохлаждение, есть шанс смерти", а при 4 ничего не выводится

while True:
    temp = input("Введи температуру тела: ")
    if temp >= '35.8' and temp <= '36.9':
        print("- Норма")
    elif temp >= '37' and temp <= '37.1':
        print("- Переутомление или начинаешь заболевать")
    elif temp >= '37.2' and temp <= '39.9':
        print("- Ты заболел(а)")
    elif temp >= '40' and temp <= '42.9':
        print("- Опасная температура! Сильный жар, есть шанс смерти")
    elif temp >= '33' and temp <= '35.7':
        print("- Переохлаждение")
    elif temp >= '28' and temp <= '32.9':
        print("- Опасная температура! Сильное переохлаждение, есть шанс смерти")
    elif temp <= '27.9':
        print("- Смерть 90%")
    elif temp >= '43':
        print("- Смерть 90%")

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

Автор решения: Zhihar

сделайте по человечески - сравнивайте с числами, а не строками

при сравнении строки со строкой надо знать правила лексического сравнения, зачем эта сложность?

while True:
    temp = float(input("Введи температуру тела: "))
    if temp >= 35.8 and temp <= 36.9:
        print("- Норма")

кстати питон позволяет такие сравнения записывать проще:

if 35.8 <= temp <= 36.9:

и еще, раз работаете с числами, то не надо округлять до десятых, т.е. вместо

if temp >= 35.8 and temp <= 36.9:
    print("- Норма")
elif temp >= 37 and temp <= 37.1:
    print("- Переутомление или начинаешь заболевать")

лучше использовать одинаковые границы и неточное сравнение, т.е. код будет таким:

if 35.8 <= temp < 37.0:
    print("- Норма")
elif 37.0 <= temp < 37.2:
    print("- Переутомление или начинаешь заболевать")

что гораздо удобнее и опять же рассчитано на то, что пользователь может ввести и 36.99999

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

Надо сравнивать с числами,а не со строкой. Вот правильный ответ:

while True:
    temp = float(input("Введи температуру тела: "))
    if temp >= 35.8 and temp <= 36.9:
        print("- Норма")
    elif temp >= 37 and temp <= 37.1:
        print("- Переутомление или начинаешь заболевать")
    elif temp >= 37.2 and temp <= 39.9:
        print("- Ты заболел(а)")
    elif temp >= 40 and temp <= 42.9:
        print("- Опасная температура! Сильный жар, есть шанс смерти")
    elif temp >= 33 and temp <= 35.7:
        print("- Переохлаждение")
    elif temp >= 28 and temp <= 32.9:
        print("- Опасная температура! Сильное переохлаждение, есть шанс смерти")    elif temp <= 27.9:
        print("- Смерть 90%")
    elif temp >= '43':
        print("- Смерть 90%")
→ Ссылка