0

我在 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 代码中。

4

1 回答 1

2

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

>>> 18111/2
9055

要获得您想要的号码,您需要使用float.

>>> 18111/2.0
9055.5

from __future__ import ...或者,您可以使用语句更改行为:

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

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

>>> range(0, 5)
[0, 1, 2, 3, 4]
>>> range(1, 6)
[1, 2, 3, 4, 5]
于 2014-11-22T05:06:18.907 回答