Форум сайта python.su
Вот, есть часть кода. Если подставить значение “pressure”, ролучим F. А вот, как на основе этого F выбирается соответствующая буква? Пожалуйста, поясните мне на пальцах. Полностью код можно глянуть тут: https://github.com/jim-easterbrook/pywws/blob/master/src/pywws/ZambrettiCore.py
F = 0.1553 * (1029.95 - pressure)
LUT = ('B', ‘D’, ‘H’, ‘O’, ‘R’, ‘U’, ‘V’, ‘X’, ‘X’, ‘Z’)
# clip to range of lookup table
F = min(max(int(F + 0.5), 0), len(LUT) - 1)
# convert to letter code
return LUT
Офлайн
Данный код представляет собой реализацию “полуэмпирического” дерева решений, результатом прохода по которому будет “вербальное/художественное” заключение о вероятной погоде (будет ли сильный дождик, или будет ясно и т.п.).
Дерево строится в зависимости от 4-х входных параметров: давления, месяца, ветра и тренда. (условия для месяца и значения для тренда, вполне вероятно, специфичны для какой-то территории, для которой строится прогноз).
F - основа для вычисления индекса буквы, соответствующей определенному прогнозу погоды; для разных наборов давления, месяца, ветра и тренда используется своя формула для F и свой перечень возможных прогнозных исходов погоды LUT. LUT и F согласованы в каждом случае ( это, видимо, составляет “know-how” алгоритма прогнозирования).
Вот, есть часть кода. Если подставить значение “pressure”, ролучим F
ZambrettiCode(pressure, month, wind, trend)
Офлайн
LumenmanВ вашем коде никак.
А вот, как на основе этого F выбирается соответствующая буква?
Офлайн
scidam
Вам нужно еще указать месяц, ветер, тренд (кроме давления). В тестовых целях назначение этих параметров выполняет функция main и циклы в нее входящие
Отредактировано Lumenman (Окт. 8, 2016 12:17:13)
Офлайн
doza_and
Возвращается просто полный список букв. Почему вы решили что буква выбирается?
Отредактировано Lumenman (Окт. 8, 2016 12:11:53)
Офлайн
Меня интересует как работает вот эта функция: F = min(max(int(F + 0.5), 0), len(LUT) - 1)
ind = min(max(int(F+0.5), 0), len(LUT)-1) return LUT[ind]
К примеру, если F= 3.7194, то каков результат?F+0.5 => 4.2194 (на int подается это значение
Отредактировано scidam (Окт. 8, 2016 14:28:41)
Офлайн
scidam
Постарался изложить очень подробно…
Офлайн