Python-如何为数组的项目赋值?

问题描述 投票:-1回答:2

我正在尝试创建一个用于求解方程式的python程序:

from sympy import symbols, Eq, solve

list1 = ['x', 'y']                 #<--- Letters of the user input
list1[0] = symbols(list1[0])       #<--- Assignment of the unknown x
list1[1] = symbols(list1[1])       #<--- Assignment of the unknown y
eq1 = Eq(x*2 - 5*x + 6 + y, 0)     #<--- Equation
res = solve(eq1, dict=True)        #<--- Solving
print(res)

我想为'list1'的第一个和第二个对象分配一个值,在这种情况下为'x = symbols('x')'和'y = symbols('y')'。因此,我尝试将'x'替换为list1 [0],将'y'替换为list1 [1],因为它可以是基于用户输入的任何字母。但是脚本在第六行仍然说“ x未定义”。因此,有没有一种方法可以将值分配给数组的项?

python-3.x sympy equation-solving
2个回答
0
投票

问题是您正在列表的上下文中创建符号。

执行等式时,Python找不到变量'x'或'y',因为它们不在列表的外部。

您可以尝试:

eq1 = Eq(list1[0]*2 - 5*list1[0] + 6 + list1[1], 0)

要获得结果,但不是很漂亮

或以下应该起作用:

x = Symbol('a')
y = Symbol('y')
eq1 = Eq(x*2 - 5*x + 6 + y, 0)

但是如果您确实希望在模块中公开这些符号,则可以执行以下操作:

def symbol_references(in_list):
    for e in in_list:
       globals()[e] = Symbol(e)

symbol_references(['x', 'y'])
print(type(x))
print(type(y))

0
投票

当您开始使用SymPy时,要花一点时间来保持SymPy对象和Python变量之间的区别。请记住,每个变量都是Python变量,您可以根据自己的意愿分配给它。

© www.soinside.com 2019 - 2024. All rights reserved.