【问题标题】:Parsing an expression containing N using SymPy使用 SymPy 解析包含 N 的表达式
【发布时间】:2015-07-27 13:08:44
【问题描述】:

我正在使用 Sympy 解析表达式并获得以下跟踪:

>>> parse_expr("3N", transformations=transformations)`
TypeError: unsupported operand type(s) for *: 'Integer' and 'function'

据我所知,发生这种情况是因为 N 被解析器视为一个函数,而不仅仅是任何其他字符串。该代码适用于我测试的其他一些符号。

谁能简要解释一下为什么会这样?是否有无法使用parse_expr 解析的关键字或字符列表?

【问题讨论】:

  • 你应该显示你对N的定义。
  • N 只是字符串的一部分。我假设 parse_expr 背后的想法是将字符转换为符号。马特在下面的回应是当场的。

标签: python sympy


【解决方案1】:

引用文档 (pitfalls and gotchas):

最后,建议您不要将 I、E、S、N、C、O 或 Q 用于变量或符号名称,因为它们用于... 数值计算(N() 是等效于 evalf() )... 或者更好的是,始终使用小写字母作为符号名称。 Python 不会阻止您覆盖默认的 SymPy 名称或函数,所以要小心。

【讨论】:

  • 谢谢马特。我在浏览文档时错过了一点,这有点令人尴尬。也许这个位也应该在关键字部分和符号部分一起提到。 :)
  • 不客气,很高兴我能帮上忙。确实不容易找到。
猜你喜欢
  • 2019-10-04
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 2022-10-04
  • 2013-01-17
  • 1970-01-01
相关资源
最近更新 更多