TypeError: nicht unterstützter Operanden Typ (s) für &: 'float' und 'float'

Ich schrieb dieses einfache Programm, um den BMI zu berechnen. Aber ich kann es nicht ausführen. Unten ist mein Programm,

PROGRAMM

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" 

AUSGABE

 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' 

Wohin gehe ich falsch Jeder lass mich einfach wissen

Vielen Dank :).

One Solution collect form web for “TypeError: nicht unterstützter Operanden Typ (s) für &: 'float' und 'float'”

& Ist ein bitweiser Operator , ich glaube, du suchst den Booleschen and .

Aber beachten Sie, dass Python auch die folgende Syntax unterstützt:

 if 18.5 < bmi1 < 24.9: # ... 

Da du scheinbar mit Einbuchtung gegangen zu sein scheinst, ist es so, wie dein Skript aussehen könnte:

 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" 

Es gibt ein paar kleine Verbesserungen:

  • Die explizite Konvertierung (da in Python 3 die input sich wie raw_input und da nichts wie der Python 2 input , könnte es eine gute Angewohnheit sein, deine Eingabe so zu schreiben)
  • Was wirklich ändert, ist der bmi Wert, also gibt es keine Notwendigkeit, zwei mal so zu schreiben.

Etwas noch zu tun, könnte das ganze Skript in Funktionen verpacken 🙂

Python ist die beste Programmiersprache der Welt.