/ / Jak naprawić ten kalkulator Python BMI? - python, debugowanie

Jak naprawić ten kalkulator Python BMI? - python, debugowanie

To jest kalkulator BMI, który napisałem w pythonie

print("BMI calculator V1")

name = str(input("What"s your name?"))
weight = int(input("Your weight in Kilograms"))
height = float(input("Your height in Metres"))

def function(w, h):    #function here is the bmi calculator
bmi = w / h ** 2
return("Your BMI is " + str(bmi))

bmi_user = function(weight, height)
print(bmi_user)

if bmi_user < 18:
print(name + "," + "you are underweight")
elif bmi_user > 25:
print(name + "," + "you are overweight")
else:
print(name + "," + "you are normal")

Pokazuje następujący błąd po uruchomieniu kodu

wiersz 15, w if float (bmi_user) <18:
ValueError: nie można przekonwertować ciągu znaków na zmienną:

Odpowiedzi:

1 dla odpowiedzi № 1

Komunikat o błędzie jest jasny: nie można dokonywać porównań między ciągiem a podwójnym.

Sprawdź, co zwraca twoja funkcja: ciąg znaków.

def function(w, h):    #function here is the bmi calculator
bmi = w / h ** 2
return("Your BMI is " + str(bmi))

bmi_user = function(weight, height)

Zrobisz to lepiej:

def bmi_calculator(w, h):
return w / h ** 2

1 dla odpowiedzi nr 2

Napraw to, nie zwracając łańcucha z obliczeń. Powinieneś to dać Jak debugować małe programy (# 1) przeczytać i śledzić, aby debugować swój kod.

print("BMI calculator V1")

name = str(input("What"s your name?"))
weight = int(input("Your weight in Kilograms"))
height = float(input("Your height in Metres"))

def calcBmi(w, h):    # function here is the bmi calculator
bmi = w / h ** 2
return bmi        # return a float, not a string

bmi_user = calcBmi(weight, height)  # now a float
print(f"Your BMI is: {bmi_user:.2f}")   # your output message

if bmi_user < 18:
print(name + "," + "you are underweight")
elif bmi_user > 25:
print(name + "," + "you are overweight")
else:
print(name + "," + "you are normal")

function nie jest naprawdę dobrą nazwą, zmieniłem ją na calcBmi.


0 dla odpowiedzi № 3

Twoja funkcja funkcji def (w, h): zwraca ciąg znaków jak poniżej.

return("Your BMI is " + str(bmi))

Nie można tego porównać z liczbą całkowitą podaną w instrukcjach, takich jak poniżej.

if bmi_user < 18:

Poniższy wiersz również będzie błędem

elif bmi_user > 25:

Zmień swoją funkcję jak poniżej, to zadziała

def function(w, h):    #function here is the bmi calculator
bmi = w / h ** 2
return bmi