Python - 如何随着时间的推移增加一个值

Python - How to Increment A Value As Time Passes

我想在这里做一些简单的事情,我想每 5 分钟将成本变量 (100.00) 增加 .01,所以每 5 分钟后我的新 value/variable 应该是 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()

感谢任何帮助。

您似乎需要 += 运算符。这会将 right-hand 值添加到存储在 left-hand 变量中的值。

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.now 的变化代表经过的时间。
  • 似乎没有必要将 tracking 存储为全局。
  • 在 single-threaded 程序中,值在达到 1000 之前不会退出,这意味着当成本递增时您不能有其他程序逻辑 运行ning。计算成本 on-demand(正如其他人所建议的)将允许您 运行 其他程序逻辑而不仅仅是循环。

试试这个

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)