为什么在Sympy中`pprint()`它没有为for循环工作?

时间:2014-04-01 12:29:51

标签: 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)*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()它的工作!)。

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

1 个答案:

答案 0 :(得分:1)

如果没有更多上下文,很难说,但可能因为wx都定义了在函数内部和外部sum() 。< / p>

另请注意,这两行不一样:

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))