2017-10-04 6 views
1

파이썬 3에서 작업하면서 "-28 + 4.0/3 * 5"와 같은 유사한 수학 방정식과 같은 문자열 입력을 허용하는 계산기를 만들었습니다. 연습으로 저는 "^"키를 사용하여 지수를 지원하여 "5.23 * 2^4/3^2 -1.0"또는 특정 동력에 대한 값을 포함하는 다른 방정식이 기능 할 수 있도록했습니다. 그러나 현재 코드로 구현하는 것이 어렵다는 것을 입증했습니다. 내 작품을 스크랩하고 싶지 않다면, 나는 원래의 문자열을 가져 와서 전술 한 "5.23 * 2^4/3^2"와 같은 입력을 선택적으로 '^'연산으로 풀 수있는 방법을 찾으면 이것을 구현할 수 있음을 깨달았다. -1.0 "은"5.23 * 16/9 -1.0 "이되어 이전에 작성된 코드를 사용할 수 있습니다. 문제는 단지이 방정식을 격리하는 데 어려움을 겪고 있으며 누군가가 손을 빌려줄 수 있기를 바라고있었습니다.파이썬, 문자열 입력의 배타적 지수화

답변

0

이진 연산자와 중위 연산자는 문자열을 기호 (숫자, 연산자)로 나눌 수 있고 연산자에 우선 순위를 할당 한 다음이를 접두사 표기법과 같은 스택으로 다시 배열 할 수 있습니다.

입력 문자열을 지수 기호로 구분 된 부분으로 분할하면 인접한 하위 문자열의 끝에서 각 숫자를 잘라내어 평가하고 바꿀 수 있습니다. "6 * 4^3 +2"-> [ " 6 * 4 ","3 + 2 "] ->"6 * "+ x +"+ 2 "