Ошибка типа: неподдерживаемые типы операндов для &: 'float' и 'float'
Я написал эту простую программу для расчета ИМТ. Но я не могу выполнить его полностью. Ниже моя программа,
ПРОГРАММА
h = input("Please Enter your height in meters:")
q = raw_input("Do you want to enter your weight in kg or lbs?")
if q=="kg":
w1 = input("Please Enter your weight in kgs:")
bmi1 = w1/(h*h)
print "Your BMI is", bmi1
if bmi1 <= 18.5:
print "Your are underweight."
if bmi1 > 18.5 & bmi1 < 24.9:
print "Your weight is normal."
if bmi1 > 25 & bmi1 < 29.9:
print "Your are overweight"
if bmi1 >= 30:
print "Your are obese"
if q=="lbs":
w2 = input("Please Enter your weightin lbs:")
bmi2 = w2/((h*h)*(39.37*39.37)*703)
print "Your BMI is:", bmi2
if bmi2<= 18.5:
print "Your are underweight."
if bmi2>18.5 & bmi2<24.9:
print "Your weight is normal."
if bmi2>25 & bmi2<29.9:
print "Your are overweight"
if bmi2>=30:
print "Your are obese"
ВЫХОД
Please Enter your height in meters:1.52
Do you want to enter your weight in kg or lbs?kg
Please Enter your weight in kgs:51
Your BMI is 22.074099723
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "bmi.py", line 11, in <module>
if bmi1 > 18.5 & bmi1 < 24.9:
TypeError: unsupported operand type(s) for &: 'float' and 'float'
Куда я иду не так? Кто-нибудь, просто дайте мне знать..
Спасибо:).
1 ответ
&
побитовый оператор, я думаю, что вы искали логическое значение and
,
Но обратите внимание, что Python также поддерживает следующий синтаксис:
if 18.5 < bmi1 < 24.9:
# ...
Поскольку вы, кажется, трогались с отступами, ваш скрипт может выглядеть так:
h = raw_input("Please enter your height in meters: ")
h = float(h)
w_unit = raw_input("Do you want to enter your weight in kg or lbs? ")
w = raw_input("Please enter your weight in {}: ".format(w_unit))
w = int(w)
if w_unit == "kg":
bmi = w / (h*h)
elif w_unit == "lbs":
bmi = w / ((h*h) * (39.37 * 39.37) * 703)
print "Your BMI is {:.2f}".format(bmi)
if bmi <= 18.5:
print "Your are underweight."
elif 18.5 < bmi <= 25:
print "Your weight is normal."
elif 25 < bmi < 30:
print "Your are overweight"
elif bmi >= 30:
print "Your are obese"
Есть несколько небольших улучшений:
- Явное преобразование (так как в Python 3
input
функция ведет себя какraw_input
и нет ничего похожего на Python 2input
Это может быть хорошей привычкой, чтобы написать свой вклад, как это) - Что действительно меняется, так это
bmi
значение, поэтому нет необходимости писать два раза одно и то же.
Что-то осталось сделать, может быть, обернуть весь скрипт в функции:)