2016-09-29 3 views
0

다음과 같이 숫자와 연산자 배열을 생성하는 프로그램이 있습니다. [1,'+',6,'*',3,'*',2] 연산 순서를 사용하여 숫자에 대한 이러한 종류의 배열을 평가하고 싶습니다. 배열 길이는 매우 길지 만 시작과 끝은 항상 숫자이며 숫자는 숫자를 따르지 않고 연산자는 연산자를 따르지 않습니다.
나는 연산자 문자열을 실제 작업으로 변환하는 데 operator 모듈을 사용할 수 있다고 생각하지만 작업 순서의 순서를 관리하는 방법을 알지 못합니다.평가 Python에서 연산자와 숫자 배열

+0

가장 간단한 방법은 문자를 문자열에 결합하고 내장 된 eval()을 사용하는 것입니다. 일반적으로 이것을 사용하는 것은 좋지 않지만 더 큰 그림을 볼 수 없다면 이는 사용자가 원하는 것을 할 것입니다. –

+0

'eval'이 문제가되지 않는다면 [shunting yard algorithm] (https://en.wikipedia.org/wiki/Shunting-yard_algorithm)을 살펴보십시오. – niemmi

답변

0

당신은 꽤 순진하지만 이것을 시도 할 수도 있습니다.

a = [1,'+',6,'*',3,'*',2] 
source = '' 
for i in a: 
    source += str(i) 
print eval(source) # 37 
+2

@ cricket_007 아니요, 'eval (' 'join (map (str, a)))'. –