2015-01-28 3 views
0

Я пытаюсь написать базовый алгоритм для оценки многочлена четвертого порядка с использованием Python. Код ниже, и я не уверен, что я делаю неправильно. Я придумал этот код, и я не уверен, что это достаточно, чтобы сделать трюк:Почему эта полиномиальная функция бросает SyntaxError?

x = int(raw_input(":")) 
def eval_poly(x): 
    if abs(x) > 0: 
     return 35x**4-17x**3+5x**2+41x-29 
print eval_poly(x) 

ошибка, что я сказал, что 35x**4 является недействительным синтаксис и полином, что я пытаюсь оценить это в следующим образом:

35x^4 - 17x^3 + 5x^2 + 41x -29 
+1

Зачем нужна строка 'if abs (x)> 0'? Функция возвращает «Нет», если вы кормите x = 0, но она действительна для вычисления полинома в 0. – alexwlchan

ответ

2

Хотя мы пишем (35 х) в математике неявно имели в виду (35 * х), интерпретатор Python не может решить эту проблему. Вы должны указать это 35 * (x ** 4) явно.

Таким образом, вы измените функцию, чтобы включить

return 35 * (x ** 4) - 17 * (x ** 3) + 5 * (x ** 2) + 41 * x - 29 

(Скобки не являются необходимыми, потому что Python будет получить правильный порядок действий без них, но я думаю, что они помогают читаемость.)


Стоит сказать: ошибка возникает, когда Python пытается оценить выражение 35x, но он не знает, как это интерпретировать. Он начинается с цифры, следовательно, не переменной (variables have to start with a non-digit character), но содержит символ алфавита, следовательно, не число. Дело не только в том, что оно не знает, что означает это выражение, а то, что Python не может анализировать 35x.

+0

ценю помощь. вообще не думал об этом – sanster9292

0

Вы оставили умножение:

35*x**4-17*x**3+5*x**2+41*x-29 
+0

одна вещь, которую я ненавижу из-за очевидных ошибок, они очевидны. Большое спасибо – sanster9292

0

Вам необходимо явно выполнить умножение, как показано ниже. то есть. 7x становится 7 * x.

В противном случае это выглядит хорошо ...

x = int(raw_input(":")) 
def eval_poly(x): 
    if abs(x) > 0: 
     return 35*x**4-17*x**3+5*x**2+41*x-29 
print eval_poly(x) 
+0

спасибо человеку. полностью не думал об этом – sanster9292

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

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