为什么这while循环执行但产生错误的答案?

时间:2019-02-14 01:01:03

标签: python function if-statement while-loop

  

钴60,一种用于癌症治疗的放射性形式的钴,   在一段时间内衰减。每年,在年初出现的金额的12%都会减少。如果一个装有60钴的容器最初包含10克,请确定五年后的剩余量。

我使用的代码是:

year = 0
cobalt_life = 10
while cobalt_life == 10:
      cobalt_life -= 0.12*cobalt_life
      year +=5
print(cobalt_life)

运行此命令时输出为8.8。应该是5.28。我想念什么?

3 个答案:

答案 0 :(得分:2)

改为使用for循环:

n_years = 5
cobalt_life = 10
for _ in range(n_years):
    cobalt_life *= 0.88
print(cobalt_life)
# 5.277319168

已编辑

如果要使用while循环:

n_years = 5
cobalt_life = 10
while n_years:
    cobalt_life *= 0.88
    n_years -= 1
print(cobalt_life)
# 5.277319168

答案 1 :(得分:0)

在while循环的第二遍中,cobalt_life不再是10(因为在第一遍中它更改了它) 您希望将循环条件设为年份,并且每次循环仅将其递增1。

答案 2 :(得分:0)

第一次迭代后,cobalt_life不再等于10。条件为False,循环终止。如果要循环,则应递增year直到达到5

尽管如此,请注意,您尝试执行的计算完全不需要循环,而应该使用幂运算来实现。

n_years = 5
cobalt_life = 10 * 0.88 ** 5 #  5.277319168