TypeError: ufunc 'multiply' не содержит цикла с сигнатурой, соответствующей типам dtype ('S32') dtype ('S32') dtype ('S32')
Я новичок в программировании,но я пытаюсь создать действительно простую программу, которая будет в основном строить линию. Пользователь вводит значения для v и a, а затем v и a и x определяют y. я попытался сделать это с помощью следующего:
x = np.linspace(0., 9., 10)
a = raw_input('Acceleration =')
v = raw_input('Velocity = ')
y=v*x-0.5*a*x**2.
В основном это будет представлять собой параболу, где v-скорость, a-ускорение, а x-время. Но, я продолжаю получать эту ошибку:
TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('S32'
) dtype('S32') dtype('S32')
2 ответа:
Из документации
raw_input
:Затем функция считывает строку из входных данных, преобразует ее в строку (очищая конечную новую строку) и возвращает ее.
Получается, что вы пытаетесь умножить строку с плавающей точкой, что-то вроде
y="3" * x - 0.5 * "3" *x**2
, которая не определена.Самый простой способ обойти это-сначала привести входную строку в состояние float.
x = np.linspace(0., 9., 10) a = float(raw_input('Acceleration =')) v = float(raw_input('Velocity = ')) y=v*x-0.5*a*x**2
Имейте в виду, что если вы используете python 3, вам нужно использовать
input
вместоraw_input
,a = float(input('Acceleration ='))