首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1.22 zyBooks实验室:锻炼过程中热量消耗的表达式

1.22 zyBooks实验室:锻炼过程中热量消耗的表达式
EN

Stack Overflow用户
提问于 2022-09-05 15:20:01
回答 1查看 1.1K关注 0票数 0

我对编程很陌生,只是不了解事情的诀窍。我想我想得太多了。请给我建议。

以下公式根据科学期刊的一篇文章(来源)估算了一个人在运动时消耗的平均卡路里:

卡路里=(年龄x 0.2757) +(体重x 0.03295) +(心率x 1.0781) - 75.4991 )x时间/ 8.368

分别用输入年龄(年份)、体重(磅)、心率(每分钟)和时间(分钟)编写一个程序。输出一个人平均消耗的卡路里。

在小数点之后用两位数字输出每个浮点值,这可以实现如下:

代码语言:javascript
复制
print('Calories: {:.2f} calories'.format(calories))

例:如果输入是:

代码语言:javascript
复制
49
155
148
60

然后输出是:

代码语言:javascript
复制
Calories: 736.21 calories

我的代码:

代码语言:javascript
复制
age = int(input())

weight = int(input())

heart_rate = int(input())

time = (input())

calories= ((age*0.2752) + (weight*0.03295) + (heart_rate*1.0781)-75.4991)*time/8.368

print('Calories: {:.2f} calories'.format(calories))
EN

回答 1

Stack Overflow用户

发布于 2022-09-05 15:53:38

您的代码是接近的,但问题是您还需要将time转换成一个数字,因为您试图在数学方程中使用它。现在,您的代码试图用等式的这一部分将float乘以一个str,这在Python中是不允许的。

代码语言:javascript
复制
# 'time' is a string here
((age*0.2752) + (weight*0.03295) + (heart_rate*1.0781)-75.4991)*time

对于您来说,使用time = int(input()),您的代码就可以工作了。

下面是您的代码的一个版本,它可以这样做,同时还会列出一些公式,以使步骤/方程更加清晰。

这还修正了您所使用的用于age * 0.2752而不是age * 0.2757的等式中的一个错误。

代码语言:javascript
复制
#!/usr/bin/env python3

if __name__ == "__main__":
    age = int(input("Age? "))
    weight = int(input("Weight? "))
    heart_rate = int(input("Heart Rate? "))
    time = int(input("Time? "))

    age_factor = age * 0.2757
    weight_factor = weight * 0.03295
    hr_factor = heart_rate * 1.0781

    cals = (age_factor + weight_factor + hr_factor - 75.4991) * time / 8.368

    print("Calories: {:.2f} calories".format(cals))

如果我们负责这个..。

代码语言:javascript
复制
❯ python sample.py
Age? 49
Weight? 155
Heart Rate? 148
Time? 60
Calories: 736.21 calories
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73611573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档