You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用sympy的parse_expr解析用户输入函数报TypeError问题

错误原因
  • 报错TypeError: expecting local_dict to be a dict是调用parse_expr函数时传参类型错误导致的:parse_expr的第二个位置参数为local_dict,要求传入字典类型的变量映射规则,你直接传入了x这个Symbol对象,不符合参数类型要求,触发类型错误。
修复方案

修改parse_expr的传参格式即可,有两种常用实现可选:

方案1:直接传入符合要求的变量映射字典

将符号x放到字典中传入,字典的键为表达式中对应的变量名字符串,修改对应代码行为:

function = parse_expr(function, local_dict={'x': x})

如果省略参数名,也要保证第二个参数是字典,写法如下:

function = parse_expr(function, {'x': x})

方案2:开启更友好的输入适配(可选)

如果需要支持用户省略乘号输入(比如输入2x自动识别为2*x),可以引入sympy内置的转换规则,完整修改后的代码如下:

from sympy import*
import sympy as smp
import numpy as np
from sympy.parsing.sympy_parser import parse_expr, standard_transformations, implicit_multiplication_application
print("Welcome...")
x = smp.Symbol('x')
function = input("Enter your function in terms of X\nIf you want to use Fixed point method input de G(x) expresion\n")
# 配置转换规则
transformations = standard_transformations + (implicit_multiplication_application,)
function = parse_expr(function, local_dict={'x': x}, transformations=transformations)

内容的提问来源于stack exchange,提问作者Juan Arango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:54:01