2014-11-22 72 views
0

我發現9GAG這張照片,我決定寫一個Python代碼,看看這是不是真的解決數學,並得到了不同的輸出從Python和Wolfram Alpha的

enter image description here

然而,當我運行下面的Python代碼,我從我從Wolfram Alpha的

import numpy as np 
import matplotlib.pyplot as plt 

def f(x): 
    return (18111/2)*(x**4) - 90555*(x**3) + (633885/2)*(x**2) - 452773*x + 217331 

for i in range(0,5): 
    print f(i) 

輸出得到了不同的結果:

217331 
0 
-7 
-40 
-129 
217016 

而這裏的鏈接到我的Wolfram Alpha的查詢 link

注意,我複製並直接從我的Python代碼粘貼我方程串Wolfram Alpha的,它似乎正確解釋。所以我非常懷疑這個錯誤是在我的Python代碼中。

回答

2

在Python 2.x中,int/int返回int。 (截斷小數點以下數)

>>> 18111/2 
9055 

爲了得到你想要的號碼,你需要使用float

>>> 18111/2.0 
9055.5 

或者,您可以更改使用from __future__ import ... statement行爲:

>>> from __future__ import division 
>>> 18111/2 
9055.5 

BTW,迭代從1到5,你需要使用range(1, 6),不range(0, 5)

>>> range(0, 5) 
[0, 1, 2, 3, 4] 
>>> range(1, 6) 
[1, 2, 3, 4, 5] 
+0

哦,是的,我應該注意到,有太多的時間,我有Python的數據類型的問題。 – atmosphere506 2014-11-22 05:35:21

相關問題