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

使用Sympy实现用户输入的正确方式?求导恒返回0问题排查

问题解决:sympify用户输入求导结果始终为0的原因及修复

问题根源

当你用sympify(input("testinput: "))处理用户输入时,sympify会创建新的符号对象——哪怕输入里的变量名和你之前定义的x、y完全一致,这两个x在SymPy里也是完全独立的实体。后续对预先定义的x求导时,新符号和它没有关联,结果自然为0。

而直接赋值userinput = x**0.5+y时,用的是你提前定义好的x、y符号,求导逻辑自然正常。

修复方法

调用sympify时,通过locals参数把已定义的符号传递进去,让sympify直接使用这些现有符号,而非新建:

修改后的代码:

init_printing(use_unicode=True)

x, y = symbols('x y', real=True)
# 传递已定义的x、y给sympify
userinput = sympify(input("testinput: "), locals={'x': x, 'y': y})

x_diff = diff(userinput, x)
print(x_diff)

或者更简洁地直接传入当前局部作用域:

userinput = sympify(input("testinput: "), locals=locals())

这样用户输入的公式就会绑定到你预先定义的x、y符号上,求导就能得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:50:24