Python 为什么“pprint()”在Sympy中没有';你不能在for循环上工作吗?

Python 为什么“pprint()”在Sympy中没有';你不能在for循环上工作吗?,python,sympy,pprint,Python,Sympy,Pprint,这是我的密码 14 def sum(output): 15 result = 0 16 for x, w in zip(output[0], output[1]): 17 result+=w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2) 18 pprint(w*exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2)) 19 return ((b-a)/2.0)*resu

这是我的密码

 14 def sum(output):
 15     result = 0
 16     for x, w in zip(output[0], output[1]):
 17         result+=w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2)
 18         pprint(w*exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))
 19     return ((b-a)/2.0)*result
对于此代码,如果我调用函数
sum
终端上的输出将打印:

0.548543700179284
0.6
0.692267362730138
0.0
0.252818105473090
0.6
但如果

 14 def sum(output):
 15     result = 0
 16     for x, w in zip(output[0], output[1]):
 17         result+=w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2)
 18     return ((b-a)/2.0)*result
 19
 20 pprint(w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))
它会打印出一个漂亮的公式(我是说pprint(),这是工作!)


为什么第一个代码不能像第二个代码那样打印出一个漂亮的等式?

没有更多的上下文很难说,但可能是因为
w
x
都是在函数
sum()的内部和外部定义的

还请注意,这两行不同:

pprint(w*exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))
pprint(w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))

请添加在第二个示例中定义的
x
w
。@NilsWerner x和w它只是列表的元素。在
sum()
之外?我要说的是:您没有显示所有相关的代码。请添加所有有工作示例所需的部分。是的,完全正确。在第二个示例中,
w
x
设置为什么?第16行中的函数是sum
的局部函数。我认为不同的形式是意图。他正在计算一个数字答案,在另一个中打印一个符号答案(假设
exp
sympy.exp
)。但是OP不是在问为什么第一个代码(它只是打印一个数字)没有打印第二个公式吗?哦,我没有注意到OP在第二个代码中使用了两次
np.exp