while循环不生成输出的原因是什么?

时间:2019-02-12 17:11:00

标签: python function input while-loop

我是python的新手,正在尝试通过做一些小型项目来学习。

问题

锶90,一种放射性元素,是放射性尘埃的一部分 核爆炸的半衰期为28年。这意味着给定数量 锶90会发射放射性粒子,并会衰减到其大小的一半 28年100克锶90衰减到更少需要多少年 超过1克?

我的输入代码:

full_life = int(100)
while full_life < int(1):
      full_life -= 0.5*full_life
      year +=28
      print("The decay time is:",year)

运行上述命令时,不会生成任何输出。为什么会这样呢?我想念什么?

4 个答案:

答案 0 :(得分:4)

当循环逻辑取反时应为:

while full_life > int(1):

答案 1 :(得分:1)

马上就使full_life为100,立即检查while循环中的条件是否为假(因为100 <1为假)。由于它是错误的,因此您将不会循环。我想您正在寻找的是将符号从<切换到>

attr(df1_xts, 'frequency') <- 2
decompose(ts(df1_xts))
Error in decompose(ts(df1_xts)) : 
  time series has no or less than 2 periods

full_life = int(100)
while full_life < int(1):
    do stuff

答案 2 :(得分:0)

像这样反转while循环逻辑之后:

while full_life>1:
   do something

将出现另一个问题。 您没有定义“年份” 您应该这样做:

year=0

答案 3 :(得分:0)

full_life代表您拥有的锶量。最初,您有100克,并且从0年开始。

year = 0
full_life = 100

您要减小full_life直到小于 1克,这意味着您只要执行full_life大于等于或等于1。

while full_life >= 1:
    full_life /= 2
    year +=28
print("The decay time is:",year)

每次条件为真时,您将full_life分成两半,然后将year增加28年。循环完成后,由于错误,您可以输出出现这种情况之前的总年数。


请注意,这并不是完全正确的,因为质量在28年内一直没有保持恒定,然后立即下降了2倍。如果从1克锶开始,这是最明显的。它的任何衰变不需要28年。

您真正需要做的是选择一个粒度(小时,天,月,任何时间),并从半衰期中找出在这段时间内有多少样品会衰减。然后,您可以减少full_life的数量,同时增加时间,以找出full_life最终降到1以下的时间。