解决数学问题,并从Python和Wolfram Alpha获得不同的输出

解决数学问题,并从Python和Wolfram Alpha获得不同的输出,python,python-2.7,math,wolframalpha,Python,Python 2.7,Math,Wolframalpha,我在9gag上发现了这张图片,我决定编写一个python代码,看看这是不是真的 然而,当我运行下面的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

我在9gag上发现了这张图片,我决定编写一个python代码,看看这是不是真的

然而,当我运行下面的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查询的链接


请注意,我将等式字符串直接从Python代码复制并粘贴到Wolfram alpha,并且它的解释似乎是正确的。所以我非常怀疑这个错误是否在我的Python代码中。

在Python2.x中,
int/int
返回一个
int
。(截断小数点以下的数字)

要获得所需的数字,需要使用
float

>>> 18111/2.0
9055.5
或者,您可以使用以下方法更改行为:


顺便说一句,从1迭代到5。您需要使用
范围(1,6)
,而不是
范围(0,5)


哦,是的,我应该注意到,有太多时间我对Python的数据类型有问题。
>>> 18111/2.0
9055.5
>>> from __future__ import division
>>> 18111 / 2
9055.5
>>> range(0, 5)
[0, 1, 2, 3, 4]
>>> range(1, 6)
[1, 2, 3, 4, 5]