我有这个代码:

def system(into):
    global sys
    x = into
    sis = [eval(i) for i in sys]
    return sis

if __name__ == "__main__":
    sys = ['x[0]+x[1]','2*x[0]-3*x[1]']

当我执行带有输入的system()函数时,我希望能够判断这个方程系统.但我遇到了这个错误:Name错误:名称"x"未定义.

我该如何解决这个问题?

推荐答案

您可以在eval函数中显式传递x值列表.另外,不要使用sys来命名变量,sys是内置Python模块.直到或除非您显式导入该包,否则它不会引起问题,但这不是一个好的做法.

下面是更正的代码.

def system(into):
    global sys
    x = into
    sis = [eval(i, {'x': x}) for i in sys] ## pass explicitly 
    return sis

if __name__ == "__main__":
     sys = ['x[0]+x[1]', '2*x[0]-3*x[1]']

Python相关问答推荐

Python中两个矩阵的自定义Hadamard风格产物

使用Beautiful Soup获取第二个srcset属性

NumPy中的右矩阵划分,还有比NP.linalg.inv()更好的方法吗?

计算相同形状的两个张量的SSE损失

配置Sweetviz以分析对象类型列,而无需转换

如何在BeautifulSoup中链接Find()方法并处理无?

输出中带有南的亚麻神经网络

删除所有列值,但判断是否存在任何二元组

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

根据二元组列表在pandas中创建新列

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

Asyncio:如何从子进程中读取stdout?

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

python中的解释会在后台调用函数吗?

计算天数

在Python中使用if else或使用regex将二进制数据如111转换为001""

Python全局变量递归得到不同的结果

合并与拼接并举

Pandas—堆栈多索引头,但不包括第一列

在numpy数组中寻找楼梯状 struct