如何编写一个会循环经过几个小时才能发现咖啡因吸收的while循环?

时间:2019-02-20 18:05:46

标签: python for-loop while-loop

咖啡因吸收到体内后,消除了13% 从身体每小时。假设一个人喝了一杯8盎司的冲泡咖啡,其中包含130毫克咖啡因,并且咖啡因会立即被人体吸收。

我正在编写一个程序来计算以下值:

a)直到体内剩余不到65毫克(原始量的一半)所需的小时数。

b)假设该人在早上7点喝一杯咖啡,然后在每个小时结束时喝一杯咖啡,直到第二天早上7点为止。 24小时结束后体内会含有多少咖啡因?

这是我的代码:

hour = 0
in_body = 130
while in_body == 65:
    hour -= 0.13*in_body
    hour +=1

为什么这对a不起作用?如何为b形成条件语句?

2 个答案:

答案 0 :(得分:3)

in_body从130永远不会更改,因此while循环永远不会执行。尝试类似的东西:

hours = 0
caffeine = 130
while caffeine > 65:
    caffeine *= 0.87
    hours +=1

print(f'{caffeine} mg of caffeine in body after {hours} hours')
# 64.794719691 mg of caffeine in body after 5 hours

您可以使用for循环在24小时后假设体内每小时摄入一杯咖啡因,从而将咖啡因摄入体内。例如:

hours = 24
caffeine = 0
for _ in range(hours):
    caffeine = caffeine * 0.87 + 130

print(f'{caffeine} mg of caffeine in body after {hours} hours')
# 964.6440864884751 mg of caffeine in body after 24 hours

答案 1 :(得分:0)

该循环不起作用,因为in_body为130,因此它不等于65,并且while循环从不执行。

此外,循环体将hour减少了13%,但这是错误的-您要减少in_body,而不是hour

您可能想要这样的东西:

hour = 0
in_body = 130
while in_body > 65:
    in_body = in_body * 0.87
    hour +=1

print('After %d hours, %d mgs of caffeine remain in the body' % (hour, in_body))