2014-11-22 8 views
0

Я нашел эту картину на 9GAG и я решил написать код питона, чтобы увидеть, если это правдаРешение по математике и получил другой выход из Python и Wolfram Alpha

enter image description here

Однако, когда я бегу следующий питона кода, я получил другой результат от того, что я получил от 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

 Смежные вопросы

  • Нет связанных вопросов^_^