我有一个烦人的错误消息,我无法弄清楚。 以下代码(Python 3 中)给出了正确的结果:
from sympy import *
x, y, z, t = symbols('x y z t')
expr = cos(x) + 1
print(expr.subs(x, y))
结果是:
cos(y) + 1
但是,当 expr 被修改或不同时,
from sympy import *
x, y, z, t = symbols('x y z t')
expr = 1
print(expr.subs(x, y))
输出是错误消息,
AttributeError: 'int' object has no attribute 'subs'
我该如何解决这个问题?必要时我需要 subs 来处理符号表达式和数字(假设符号表达式被修改为结果是数字)。 问候。
最佳答案
第二个示例中的 1
不是 SymPy 数字,只是一个常规的 Python 整数。
您可以使用S()
(或sympify()
)函数将其转换为 SymPy 数字。
官方文档有一个Gotchas entry描述了您的问题并给出了更多示例,以及 description sympify
可以做什么。
关于python - 如何摆脱 sympy 替代错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38083933/