Математическое уравнение как строка [дубликат]

Добавьте файл hook с именем hook-encodings.py в C:\Python\Lib\site-packages\PyInstaller\hooks и добавьте следующую строку кода для сбора модуля кодирования в файле hook

from PyInstaller.utils.hooks import collect_submodules

hiddenimports = collect_submodules('encodings')

, это может сработать, этот ответ может помочь вам Ошибка Pyinstaller для проекта Djnago & quot; ИмпортError: Нет модуля с именем 'django.contrib.admin.apps' & quot;

26
задан NotMe 5 November 2012 в 18:05
поделиться

5 ответов

Вы видели https://ncalc.codeplex.com/ и https://github.com/sheetsync/NCalc ?

Он расширяемый, быстрый (например, имеет собственный кеш) позволяет вам предоставлять пользовательские функции и переменные во время выполнения, обрабатывая события EvaluateFunction / EvaluateParameter. Примеры выражений, которые он может анализировать:

Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");

  e.Parameters["Pi2"] = new Expression("Pi * Pi");
  e.Parameters["X"] = 10;

  e.EvaluateParameter += delegate(string name, ParameterArgs args)
    {
      if (name == "Pi")
      args.Result = 3.14;
    };

  Debug.Assert(117.07 == e.Evaluate());

Он также обрабатывает unicode & amp; многие типы данных изначально. Он поставляется с файлом antler, если вы хотите изменить грамматик. Существует также вилка, которая поддерживает MEF для загрузки новых функций.

Он также поддерживает логические операторы, строки даты / времени и операторы if.

31
ответ дан David Makogon 22 August 2018 в 23:08
поделиться
  • 1
    Выглядит многообещающе – NotMe 9 December 2010 в 17:06
  • 2
    Просто проверено. Выглядит отлично. Еще нужно загрузить тест, но проект был чрезвычайно прост в реализации. – NotMe 9 December 2010 в 20:21
  • 3
    ace, не стесняйтесь публиковать сообщения на странице обсуждения Ncalc, если у вас есть какие-либо проблемы – GreyCloud 10 December 2010 в 12:29
  • 4
    Просто хотел опубликовать обновление после 7 месяцев использования. Проще говоря, он качается. Это быстро, очень легко реализовать и еще проще расширить с помощью собственных пользовательских функций. Я настоятельно рекомендую nCalc. – NotMe 5 July 2011 в 15:50
  • 5
    Спасибо, Крис, приятно слышать :) Мне очень нравится работать с каркасом – GreyCloud 5 July 2011 в 17:49

Я полностью понимаю, как поздно этот ответ, однако, я хотел бы бросить свое решение, потому что я считаю, что он может добавить больше, чем принятый ответ на использование NCalc , если кто-то захочет использовать выражения в нескольких платформ.

Я создал парсер для C # с планами также реализовать его для Java и Swift в течение следующих нескольких месяцев. Это означает, что вы можете оценивать выражения на нескольких платформах без необходимости настройки на платформе.

Выразительный инструмент, и он доступен по адресу: GitHub или Nuget .

На сайте имеется достаточное количество документации, но для предотвращения гниения ссылки здесь приводится пример того, как его использовать:

Поддержка переменных

var expression = new Expression("1 * [variable]");
var result = expression.Evaluate(new Dictionary<string, object> { ["variable"] = 2);

Функции

var expression = new Expression("sum(1,2,3,4)");
var result = expression.Evaluate();

Он был разработан так, чтобы максимально соответствовать NCalc, но он добавил поддержку таких вещей, как ключевое слово «null».

1
ответ дан Bijington 22 August 2018 в 23:08
поделиться

Как насчет оценщика экспресс-оценки с быстрым весом ? Он позволяет вам устанавливать переменные и поддерживает логические операторы .

Если вам нужно что-то более сильное и у вас есть время, вы также можете создать свой собственный язык выражения с помощью Ирония .

12
ответ дан Mason Wheeler 22 August 2018 в 23:08
поделиться
  • 1
    Я видел это, но не был уверен, действительно ли кто-то его использовал. У вас есть опыт в реальной жизни? – NotMe 9 December 2010 в 17:07
  • 2
    @Chris - я наткнулся на нее, одновременно перебирая свой собственный синтаксический анализатор. Он работает как рекламируемый, но мои требования не включают fast , поэтому вы можете захотеть сравнить. Кроме того, он может быть или не быть легким в зависимости от того, как вы его определяете;). – Corbin March 9 December 2010 в 17:29
  • 3
    Я поддержал вас, но в конечном итоге решил против этого. После загрузки я увидел, что это все код vb; я уверен, что это нормально, но что-то во мне (возможно, более 20 лет развития) отказывается работать с чем-либо, связанным с vb, если у меня есть выбор. ;) – NotMe 9 December 2010 в 20:57
  • 4
    Для меня. это быстрее, чем NCalc – ISCI 2 December 2016 в 09:40
  • 5
    Или попробуй этот старый каштан. Я все еще использую его сегодня, и он отлично работает. [Д0] codeproject.com/Articles/19768/… – Fandango68 18 April 2018 в 23:32

самореклама здесь я написал генератор синтаксического генератора для c # https://github.com/b3b00/csly , вы можете найти пример parseras выражения на моем github. вам может потребоваться настроить его в соответствии с вашими потребностями

-1
ответ дан Olivier Duhart 22 August 2018 в 23:08
поделиться

Интерпретатор Hisystems поддерживает пользовательские функции, операторы и литералы, является легким чистым портативным кодом c #. В настоящее время он работает на iOS через MonoTouch и должен работать в любой другой среде Mono, а также в окнах. Бесплатно для коммерческого использования. Доступно в GitHub в https://github.com/hisystems/Interpreter .

5
ответ дан Toby 22 August 2018 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: