Вывод результата по нескольким условиям
У меня стоит следующая задача:
Создайте программу "Медицинская анкета", где вы запросите у пользователя такие данные, как имя, фамилию, возраст, и вес. Выведите результат, согласно которому пациент в хорошем состоянии, если ему до 30 лет и вес от 50 и до 120 кг; Пациенту требуется начать вести правильный образ жизни, если ему более 30 и вес меньше 50 или больше 120 кг; Пациенту требуется врачебный осмотр, если ему более 40 и вес менее 50 или больше 120 кг.
good = 'хорошее состояние!'
normal = 'следует заняться собой!'
bad = 'следует обратиться к врачу!'
print ('med card 1.0')
age = int(input('how old are u? : '))
weight = float(input('ur weight : '))
if age <= 30 and weight >= 50 <= 120:
print(good)
elif age > 30 and weight < 50 > 120:
print (normal)
else:
print(bad)
У меня возникают проблемы с выводом результата bad, всегда выводит good или normal.
Также, как можно лучше сократить код в плане строк.
Извиняюсь, если задаю глупые вопросы.
Ответы (3 шт):
if age <= 30 and weight >= 50 <= 120:
print(good)
elif age > 30 and weight < 50 > 120:
print (normal)
else:
print(bad)
потому что вы уж очень вольно распорядились сложными условиями
ведь по else у вас "все плохо" вывелось для всех остальных, чем прошедшим 1) или 2) условия
а в задаче конкретно говорится
возраст больше 40 и весь меньше 50 или больше 120
посмотрите что у вас будет если возраст больше 40, а весь 100кг - посмотрите - у вас выведется "плохо"
поэтому в данной задаче не надо делать ilif - сделайте просто 3 условия if ну или вместо else сделайте еще elif и впишите третье условие, а уж потом сделайте else Для остальных, кто не попал ни в один из трех критериев
Вам нужно правильно проверять условия:
good = 'хорошее состояние!'
normal = 'следует заняться собой!'
bad = 'следует обратиться к врачу!'
print('med card 1.0')
age = int(input('how old are u? : '))
weight = float(input('ur weight : '))
if weight < 50 or weight > 120: # проверяем вес
if age >= 40: # условие для тех, кто старше 40
print(bad)
elif age >= 30: # или для тех, кто старше 30
print(normal)
else:
print(good)
weight >= 50 <= 120
Такое условие эквивалентно следующему:
weight >= 50 and 50 <= 120
То есть оно проверит только weight >= 50, а вторая часть будет всегда True.
Правильно же условие можно записать вот так:
50 <= weight <= 120
Это будет сокращённая запись для такого условия:
50 <= weight and weight <= 120
А в целом, как правильно замечено в комментариях, задача кривая: если вес у пациента выходит за обозначенные границы и ему меньше 30 лет, то непонятно, что выводить в этом случае.