2017-02-02 1 views
2

저는 코딩에 익숙하지 않지만 정말 간단하게 만들려고합니다. 프로그램은 기본적으로 라인을 그릴 것입니다. 사용자는 v와 a의 값을 입력하고 v와 a를 입력하면 x가 y를 결정합니다. 나는이이 작업을 수행하려고 시도 : V는 속도입니다TypeError : ufunc 'multiply'에 서명 유형이 일치하는 루프가 포함되지 않았습니다. dtype ('S32') dtype ('S32') dtype ('S32')

x = np.linspace(0., 9., 10) 
a = raw_input('Acceleration =') 
v = raw_input('Velocity = ') 
y=v*x-0.5*a*x**2. 

기본적으로이 포물선을 나타냅니다, a는 가속도 x는 시간입니다. documentation of raw_input에서

TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('S32' 
) dtype('S32') dtype('S32') 

답변

3

:하지만,이 오류가 계속

The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

그래서 무슨 일하는 것은 당신이 정의되지 않은 y="3" * x - 0.5 * "3" *x**2처럼, 부동 뭔가를 문자열을 곱하려고한다는 것입니다.

가장 쉽게 피할 수있는 방법은 입력 문자열을 먼저 float로 변환하는 것입니다. 당신은 파이썬 3을 사용하는 경우, 대신 raw_inputinput를 사용할 필요가 거라고

x = np.linspace(0., 9., 10) 
a = float(raw_input('Acceleration =')) 
v = float(raw_input('Velocity = ')) 
y=v*x-0.5*a*x**2 

마음,

a = float(input('Acceleration =')) 
+0

그 이유는 가장 쉬운 방법은? – AsheKetchum

+0

글쎄, 파이썬 2에서는'raw_input' 대신에'input'을 사용할 수 있지만 문제의 근원을 조금 숨긴다. 'input'은 입력을 평가하기 때문에 모든 종류의 숨겨진 트랩이 존재합니다. 반면에'float (raw_input())'는 작동하거나 에러를 던집니다. – ImportanceOfBeingErnest

+0

플로팅으로 캐스팅하는 것이 가장 안전한 방법입니까? – AsheKetchum

관련 문제