Почему эта полиномиальная функция выдает ошибку SyntaxError?

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

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 

4 ответа

Решение

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

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

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

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


Стоит сказать: ошибка возникает, когда Python пытается оценить выражение 35x, но он не знает, как это интерпретировать. Он начинается с цифры, следовательно, не является переменной ( переменные должны начинаться с нецифрового символа), но содержит символ алфавита, следовательно, не число. Дело не только в том, что оно не знает, что означает это выражение, а в том, что 35x Python невозможно разобрать.

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

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

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

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

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

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) 
Другие вопросы по тегам