sm.add_constant () с sm.Logit

Вот алгоритмическое решение, подобное jMichael, которое циклически перемещает символ выражения по символу и постепенно отслеживает left / operator / right. Функция накапливает результат после каждого поворота, который находит символ оператора. Эта версия поддерживает только операторы «+» и «-», но записывается для расширения с другими операторами. Примечание: перед циклом мы устанавливаем 'currOp' в '+', потому что предположим, что выражение начинается с положительного поплавка. Фактически, в целом, я делаю предположение, что ввод аналогичен тому, что исходит от калькулятора.

function calculate(exp) {
  const opMap = {
    '+': (a, b) => { return parseFloat(a) + parseFloat(b) },
    '-': (a, b) => { return parseFloat(a) - parseFloat(b) },
  };
  const opList = Object.keys(opMap);

  let acc = 0;
  let next = '';
  let currOp = '+';

  for (let char of exp) {
    if (opList.includes(char)) {
      acc = opMap[currOp](acc, next);
      currOp = char;
      next = '';
    } else {
      next += char;
    } 
  }

  return currOp === '+' ? acc + parseFloat(next) : acc - parseFloat(next);
}
0
задан Tomka Koliada 8 March 2019 в 11:58
поделиться