Python-如何随着时间的流逝增加一个值

时间:2019-07-05 20:29:42

标签: python list increment

我在这里尝试做一些简单的事情,我想将成本变量(100.00)每5分钟增加.01,所以每5分钟之后,我的新值/变量应该是100.01,然后是100.02,然后是100.03,依此类推。

但是我不知道如何将其添加到现有值中。 到目前为止,这是我已经尝试过的方法,我已将300秒缩短为10秒以加快速度。

import time
import datetime


tracking = time.time()


def values():
    global tracking

    now = datetime.datetime.now()
    cost = 100.00
    increase = .01


    newvalue = []

    for x in range(1,1000):
        print(x)
        time.sleep(2)

        if time.time() - 10 > tracking:
            newvalue.append(float(increase))
            print(newvalue)
            print(now)

            tracking = time.time()



values()

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

似乎您想要+=运算符。这样会将右侧的值添加到左侧变量中存储的值中。

import time
import datetime


tracking = time.time()


def values():
    global tracking

    now = datetime.datetime.now()
    cost = 100.00
    increase = .01


    for x in range(1,1000):
        print(x)
        time.sleep(2)

        if time.time() - 10 > tracking:
            cost += increase
            print('Cost: {}'.format(cost))
            print(now)

            tracking = time.time()



values()

还有其他要考虑的问题:

  • 浮点数不是存储货币值的好方法。因为它们存储二进制分数,所以它们不能代表所有十进制分数。考虑改用decimal.Decimal
  • 要跟踪经过的时间,最好使用time.monotonicdatetime.now()可以从外部进行调整(例如,通过ntpdate进行调整),因此您不能假定datetime发生变化。现在表示经过的时间。
  • 似乎没有必要将tracking存储为全局变量。
  • 在单线程程序中,直到达到1000,值才会退出,这意味着在成本增加的同时您无法运行其他程序逻辑。按需计算成本(正如其他人所建议的那样)将使您能够运行其他程序逻辑,而不仅仅是循环。

答案 1 :(得分:0)

尝试一下

import time


def increase_value_evrey_t_sec(initail_value, interval, increase_by,stop_after = -1):
    counter = 0
    values = []
    while counter < stop_after or stop_after == -1:
        time.sleep(interval)
        initail_value += increase_by
        print(initail_value)
        values.append(initail_value)
        counter += 1

increase_value_evrey_t_sec(2,2,3,4)

increase_value_evrey_t_sec(2,2,3,4)