Python - Как увеличить значение с течением времени - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь сделать что-то простое здесь, я хочу увеличить свою переменную стоимости, которая равна (100,00), на 0,01 каждые 5 минут, поэтому через каждые 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 ]

1 голос
/ 06 июля 2019

Кажется, вам нужен оператор +=.Это добавляет правое значение к значению, которое хранится в левой переменной.

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.monotonic.datetime.now() может быть изменен извне (например, с помощью ntpdate), поэтому вы не можете предполагать, что изменение в datetime.now представляет истекшее время.
  • Кажется, нет необходимости хранить tracking как глобальное.
  • В однопоточной программе значения не будут выходить до тех пор, пока не будет достигнута 1000, что означает, что вы не сможете запустить другую логику программы, пока увеличивается стоимость.Расчет стоимости по требованию (как предлагали другие) позволит вам использовать другую логику программы, а не просто циклы.
0 голосов
/ 06 июля 2019

Попробуйте это

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)
...