如何在 python 中用 eval() 解释 sin(x)

How to interpret sin(x) with eval() in python

我试图让用户键入 sin(x) - y 以使用 SymPy 建立方程式,但是,使用我当前的代码,当您输入此代码时,它 returns:

TypeError: can't convert expression to float

我当前的代码是:

import numpy as np
import sympy as sp
import math
from math import sin, cos, tan

x, y = sp.symbols('x y')
literalEq = input("Enter equation")
eq = eval(literalEq)

我对使用 SymPy 还很陌生,你能帮帮我吗?

您似乎正试图在输入中直接输入 xy,这主要是算作表达式而不是其他任何东西。您需要输入 sin(3) - 5 这样的直接值,这将 return -4.858879991940133.

或者您可以使用 sympify 函数简化方程式,以便使用 evalf 函数对其进行运算。

import sympy
from sympy import *
init_printing(use_unicode=True)

x, y = sympy.symbols('x y')
literalEq = str(input("Enter equation "))
literalEq = sympify(literalEq)
literalEq = literalEq.evalf()
pprint(literalEq) #For pretty printing

或者从 sympy 导入 sin (and/or 你需要的三角函数) 也可以。

import sympy
from sympy import * #or from sympy import sin
init_printing(use_unicode=True)

x, y = sympy.symbols('x y')
literalEq = input("Enter equation ")
eq = eval(literalEq)
pprint(eq)