【问题标题】:How do I add the BMI calculation to the following code?如何将 BMI 计算添加到以下代码中?
【发布时间】:2016-03-27 00:45:09
【问题描述】:

下面是我的代码:

def inForm():
  name = requestString("What is your name?")
  age = requestInteger("What is your age?")
  height = requestInteger("What is your height?")
  weight = requestInteger("What is your weight?")
  print "Hello", name, "!", "You are", age,"years old!", "Your height  
  is", height, "cm", "and you weigh", weight, "kg"

我需要在这段代码中添加 BMI 计算,这是我的公式,BMI =weight/(height*height)

根据 BMI 显示这些消息:

你的体重严重不足,不到 15 岁

您从 15.0 到 16.0 体重严重不足

您从 16.0 到 18.5 体重过轻

你的体重在 18.5 到 25 之间是正常的

你从 25 岁到 30 岁超重

您在 30 到 35 岁之间属于中度肥胖

你从 35 岁到 40 岁严重肥胖

你 40 岁以上严重肥胖

我似乎无法弄清楚,我该怎么做?

提前致谢!

【问题讨论】:

    标签: jython jes


    【解决方案1】:

    与其将 cm 转换为 m,不如使用 requestNumber 作为身高和体重。此外,打印语句可能会更短,就像我在下面演示的那样。另外,我使用 %s %d %r 这称为String Formatting Operations

    def inForm():
     name = requestString("Please enter your name")
     age = requestInteger("How old are you?")
     height = requestNumber("How tall are you? (Meters)")
     weight = requestNumber("How heavy are you? (Kilograms)")
     bmi = weight/(height*height)
    
     print "Hello, %s! I see that you are %r years old, %r meters tall, weight %r kgs and your BMI is %d." % (name, age, height, weight, bmi)
    
     n = bmi
     if n<15:
      print "You are very severely underweight"
     elif 15<=n<=16:
      print "You are severely underweight"
     elif 16<n<=18.5:
      print "You are underweight"
     elif 18.5<n<=25:
      print "Your weight is normal"
     elif 25<n<=30:
      print "You are overweight"
     elif 30<n<=35:
      print "You are moderately obese"
     elif 35<n<=40:
      print "You are severely obese"
     elif n>40:
      print "You are very severely obese"
    

    【讨论】:

      【解决方案2】:

      在计算 bmi 时,您通常使用以米为单位的高度(而不是厘米)。这意味着您需要对公式中从 cm 到 m 的转换进行两次调整:

      bmi = 10000 * weight / (height*height)
      print bmi
      

      您可以对文本部分使用 if-elif-...-else 语句:

      if bmi < 15:
          message = "very severely underweight"
      elif bmi <= 16:
          message = "severely underweight"
      # Add more elif parts here...
      else:
          message = "very severely obese"
      
      print "You are", message
      

      【讨论】:

      • 不使用height**2有具体原因吗
      • 我使用了 OP 中的公式,但您完全正确:height*height 可以替换为 height**2
      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 2016-11-24
      • 2013-06-19
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 2021-07-21
      相关资源
      最近更新 更多