2012-11-01 2 views
-1

가능한 중복 :
I’m making a PEMDAS solver and don’t know what to write만드는 방법 파이썬은 어떻게 그 숫자 입력에서 오는 pemdas

나는 pemdas 해결사 프로그램을 만들고 있어요, 내가 할 수없는 것 사용자가 프로그램에 쓴 방정식을 푸십시오. 현재 코드는 다음과 같습니다.

+2

정교하게 신경 쓰시겠습니까? 내가 이해 한 것부터 (http://www.purplemath.com/modules/orderops.htm) int로 직접 변환하기를 원하지 않고, 일부 문자열 파싱을해라 .- 당신의'solve' 함수는 어디에 있는가? –

+0

이므로 solve() 함수를 쓸 것을 기대하십시오. – root

+0

https://en.wikipedia.org/wiki/Operator-precedence_parser – starblue

답변

5

이것은 실제로 생각할 수있는 것보다 힘든 문제이며 질문은 현재의 형태로 대답하기가 어렵습니다. 여기에 몇 가지 제안 된 접근법이 있습니다. 당신은 이것들을 들여다보고 그들 중 한 명 또는 그 이상에게 시험을주고, 문제가 생길 때 더 구체적인 질문을해야합니다.

아마도 가장 좋은 방법은 표현식을 postfix으로 변환하고 shunting-yard algorithm을 사용하고 그 다음에 스택을 사용하여 표현식을 평가하는 것입니다.

또 다른 옵션은 PyParsing입니다. PyParsing을 사용하면 문자열에 대한 구문 분석 규칙을 지정하고 특정 토큰에 함수를 할당 할 수 있습니다. 파싱 ​​단계에서 결과를 계산할 수 있습니다. 이것은 훨씬 추상적 인 접근 방식이 될 것입니다. (또한이 예제 페이지에는 이런 종류의 좋은 예가있을 수 있습니다. 잘 살펴보십시오!)

+0

+1은 OP의 좋은 출발점입니다. –