0

我陷入了一个难题。我试图弄清楚为什么递增计数器不递增。它只返回一个值。这个想法是一个随机时间,递增计数器 t_years 将下降到零并重新开始,而另一个计数器将继续运行。

import time, math, random

t0 = time.time()
average_life_span = .10

while True:
    time.sleep(.01)
    a = time.time()
    age = int (a*1000) - int(t0*1000) #millis

    t_years = 0
    while (int (age) < int (random.normalvariate (average_life_span, 1))):
            t_years = 0
    else:
            t_years = t_years + .01

    print age, t_years
4

1 回答 1

1

t_years = 0在内部循环之前设置,然后每次通过循环再次设置。

当您最终完成内部循环时,在else子句中添加.01. 所以现在保证是0.01

下一次通过外循环时,您再次将其重置为0,然后一遍又一遍地这样做,最后添加.01到最后。所以它再次保证是0.01

如果您希望数字从外部循环开始0并每次递增0.01,请不要一直将其重置为0. 做这个:

t_years = 0

while True:
    time.sleep(.01)
    a = time.time()
    age = int (a*1000) - int(t0*1000) #millis

    while (int (age) < int (random.normalvariate (average_life_span, 1))):
        pass
    else:
        t_years = t_years + .01

    print age, t_years

我不确定这个循环实际上应该做什么。我认为它永远不会被触发,但即使是这样,它所能做的只是延迟随机时间量,同时尽可能多地消耗 CPU。你为什么想这么做?

于 2013-11-13T20:16:33.527 回答