Было бы более полезно показать нам ошибку, с которой вы столкнулись, трудно сказать, в чем может быть проблема, поскольку код также не работает. Если у вас есть трассировка, это было бы полезно при решении этого вопроса.
Назначение просто происходит, когда в левой части =
есть переменная. При вызове метода, такого как get_bmr()
, будет назначено то, что когда-либо return
'редактировалось этой функцией.
Ваш код может давать сбой, так как вы пытаетесь получить gender
, но это не так определено в функции main
. Вы можете заменить if gender "M" elif "F"
просто следующим. (Поскольку вы вызываете все это в get_bmr
)
bmr = get_bmr()
Если вы хотите передать bmr
в следующую функцию, создание аргумента для get_daily_calorie_requirement
решит проблему?
def get_daily_calorie_requirement(bmr):
dcr_5 = 1.9
return int(bmr * dcr_5)
def main():
bmr = get_bmr()
daily_calorie_requirement = get_daily_calorie_requirement(bmr)
if __name__ == '__main__':
main()
Если вы хотите упростить его, вы можете переместить некоторые параметры в аргументы:
def get_bmr(gender, age, height, weight):
""" Calculate BMR using the following formula:
bmr = weight_const*weight ... etc.
"""
gender_coef = 5 if gender == "M" else -161
return int((4.536 * weight) + (15.88 * height) - (5 * age) + 5)
gender = input("What is your gender: M or F?")
while gender not in ["M", "F"]:
print("Please try again, accepted values: M/F")
gender = input("What is your gender: M or F?")
age = int(input("What is your age?"))
height = int(input("What is your height in inches?"))
weight = int(input("What is your weight in pounds?"))
bmr = get_bmr(gender, age, height, weight)
Несколько вещей, которые могут быть сложными, именовать переменные так же, как ваши функции, или просто забыть return
в функции.