Python случайным образом умножает значения импортированного вложенного списка - PullRequest
0 голосов
/ 12 апреля 2019

Я создаю веб-приложение с Django.Я использую файл с именем simulateur_data.py, который содержит класс с именем SimulateurData, в котором хранятся все ключевые параметры, которые мне нужно использовать в скриптах и ​​шаблонах.Цель состоит в том, чтобы было легче изменить параметры, когда они уместны.

Я использую Python 3.7.2 и django 2.1.7

Это прекрасно работает, когда я импортирую все параметры из SimulateurData, кромеодин, который является вложенным списком.Когда я импортирую его из другого скрипта, иногда он импортирует правильные значения, иногда я получаю вложенный список с мультипликатором 137.74632546929436, примененным к некоторым значениям.

Сначала я подумал, что это потому, что вложенный список содержит смесьinteger и float, но затем я преобразовал все значения в float и все еще получаю ту же проблему.

Вот моя структура приложения (я отображаю только те файлы и папки, которые я считаю релевантными):

- app/
    - data/
        - simulateur_data.py
    - scripts/
        - calculs.py

В simulateur_data.py, вот код вложенного списка, с которым у меня проблема (table_bareme_ir - это тот, который я импортирую: он конвертирует t_i_r в float):

class SimulateurData(models.Model):

    t_i_r = [
        [0, 9964, 0, 0],
        [9964, 27519, 0.14, 2457.7],
        [27519, 73779, 0.3, 13878],
        [73779, 156244, 0.41, 33810.65],
        [156244, 1e+100, 0.45, 0],
    ]

    table_bareme_ir = [[float(x) for x in row] for row in t_i_r]

ps: я впервые использовалЗатем float ('inf') попробовал np.inf и, наконец, протестировал с 1e + 100, думая, что это было источником проблемы.У меня все еще есть проблема с 1e + 100.

Вот как я импортирую table_bareme_ir в calculs.py:

from ..data.simulateur_data import SimulateurData

table_bareme_ir = SimulateurData.table_bareme_ir

, как я уже сказал, иногда импорт идет правильно, иногда идет неправильно.Когда это идет не так, у меня есть следующий результат для table_bareme_ir:

table_bareme_ir = [
    [0.0, 1372504.386976049, 0.0, 0.0],
    [1372504.386976049, 3790641.1305895117, 0.14, 338539.14410588477],
    [3790641.1305895117, 10162786.146799067, 0.3, 1911643.5048628675],
    [10162786.146799067, 21522036.876624424, 0.41, 4657292.799228396],
    [21522036.876624424, 1.3774632546929432e+102, 0.45, 0.0]
]

кажется, что некоторые значения остаются неизменными (третий элемент каждого вложенного списка, который был с плавающей точкой меньше 1), а некоторыеумножаются ровно на 137.74632546929436

Я уже несколько часов смотрю на эту проблему, но я действительно отчаялся и не нахожу никакой логики в этом поведении.

Кроме того, класс SimulateurData содержит другие вложенные спискиоснованный на той же структуре, которая никогда не представляет никаких проблем при импорте.Например, этот:

    toto = [
        [0, 6500, 0.03945],
        [6500, 17000, 0.01627, 256.425],
        [17000, 60000, 0.01085, 427.26],
        [60000, 0.00814, 893.81],
    ]

Кто-то уже сталкивался с подобной проблемой?Как я могу решить это?Я действительно хочу сохранить все мои параметры в одном месте (SimulateurData) для целей обслуживания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...