eval

Written by

in

7을 구하지 못해서 답안지를 찾아보려고 했다. 이 회사 문제집은 접근 방법이 마음에 들지 않는 경우가 있었다. 그래서 모든 경우를 찾아보기로 했다.

파이썬 f-string과 eval()을 이용하면 계산된 결과를 얻을 수 있다. 0을 나누는 경우에는 zero division error가 생긴다. 그래서 try ~ except로 이용한다.

calc = ['+', '-', '*', '/']
for cal1 in calc:
    for cal2 in calc:
        for cal3 in calc:
            expr = f"(5 {cal1} 5) {cal2} (5 {cal3} 5)"
            
            try:
                result = eval(expr)
            except ZeroDivisionError:
                result = None

            if result == 1:
                print(expr)

이를 이용해서 풀어보면 결과는 다음과 같다.

  • 1개만 있는 경우: 2, 3, 7
  • 2개 있는 경우: 9,
  • 3개 있는 경우: 11
  • 7개: 1, 10