본문 바로가기
프로그램

[파이썬] 문제 : 입력 받은 수식으로 계산하기

by 오디세이99 2022. 11. 13.
728x90
반응형

조건

1. 아래의 조건을 만족하도록 작성 후 출력하기
1. 무한루프로 사용자에게 수식을 입력받는다.
2. 수식 대신 대문자 X가 입력되면 종료.
3. 수식을 계산해서 수식과 결과를 출력한다.
   결과는 총 40칸으로 오른쪽 정렬하여 출력.
4. 사용자가 수식을 계속해서 입력하면 기존의 수식들을 출력하고
   기존 결과에 추가로 수식을 계산한 결과를 출력한다.
5. 수식 대신 C를 입력하면 0을 출력하고 수식들을 전부 초기화.

result = 0
lst = []
while True:
    ss = ''.join(lst)                     # 입력된 수식 보여주기 위해 문자열로 변환
    ins = input(f"{ss}")                  # 입력 받음
    
    if ins != "X" and ins != "C":        # X도 아니고, C 도 아니면 수식  계속 입력 중
        lst.append(ins)                   # 입력된 문자열을 리스트에 추가
    elif ins == "X":                     # X면 종료
        result = int(lst[0])              # 처음 입력 값을 result에 대입
        for i in range(1, len(lst), 2):  # 인덱스 1번부터 step=2로 이동. 
            if lst[i] == '+':            # + 이면
                result += int(lst[i+1])
            elif lst[i] == '-':
                result -= int(lst[i+1])
            elif lst[i] == '*':
                result *= int(lst[i+1])
            elif lst[i] == '/':
                result /= int(lst[i+1])

        ss = ''.join(lst)                 # 리스트(lst)에 있는 수식들을 합쳐서 문자열로 만듬
        ss += ' = ' + str(result)         # 수식 계산 결과를 문자열로 만들어서 붙임
        print("%40s"%ss)                  # 결과 출력. 총 40칸으로 오른쪽 정렬. 
        break                             # 무한 반복 빠져 나감
    elif ins == "C":                     # C 일때 초기화
        result = 0
        lst = []

결과

3
3+
3+2
3+2*
3+2*2
3+2*2/
3+2*2/3
3+2*2/3X
            3+2*2/3 = 3.3333333333333335
728x90
반응형

댓글