所以我試圖創建這個程式,它接受輸入(例如 x 2=5),然后 sympy 求解該方程。但是,因為我相信“=”符號會導致錯誤,所以我試圖將其從輸入中洗掉,但是我發現我自己在 simpy 求解器中輸入了一個字串型別。有什么解決辦法嗎?
import math
from sympy import *
class operations():
def __init__(self):
self.operation = input()
def solution(self, *o):
x, y, z = symbols("x y z")
equals = self.operation.split("=",1)[1]
equation = self.operation.split("=")[0]
solution = solveset(Eq(equation, int(equals)), x)
print(solution)
operations().solution()
uj5u.com熱心網友回復:
您可以使用sympify將字串轉換為符號運算式,但您必須先洗掉等號。在下面的代碼中,首先我拆分了找到等號的字串,然后我將兩個結果字串轉換為帶有 的符號運算式sympify,最后我求解了方程。
def solution(self, *o):
left, right = [sympify(t) for t in self.operation.split("=")]
solution = solveset(left - right) # solve left - right = 0
print(solution)
uj5u.com熱心網友回復:
您可以parse_expr用來決議原始字串。可以使用微調設定,但如果您在等號的每一側輸入有效的 SymPy 運算式(或幾乎有效),則指定transformations='all'是將方程決議為等式的簡單方法:
>>> from sympy.parsing import parse_expr
>>> parse_expr('2x=4', transformations='all')
Eq(2*x, 4)
>>> solveset(_)
{2}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535655.html
標籤:Python数学同情
