RawInput=list(input())

Input=[]

I=''

i=0

while i<=len(RawInput)-1:

    I=''

    if RawInput[i]!="+"and RawInput[i]!="-" and RawInput[i]!="*" and RawInput[i]!="/" and RawInput[i]!="(" and RawInput[i]!=")":

        while RawInput[i]!="+" and RawInput[i]!="-" and RawInput[i]!="*" and RawInput[i]!="/" and RawInput[i]!="(" and RawInput[i]!=")":

            I=I+RawInput[i]

            i+=1

            if i>len(RawInput)-1:

                break

        Input.append(I)

    else:

        Input.append(RawInput[i])

        i+=1

Ls=["&"]

Ln=[]

for i in range(len(Input)):

    if Input[i]!='+' and Input[i]!='-' and Input[i]!='*'and Input[i]!='/' and Input[i]!="(" and Input[i]!=")": #Input[i]가 기호가 아닐 때

        Ln.append(Input[i])

    else: #Input[i]가 기호일때

        if Input[i]=='+' or Input[i]=='-': #입력 받은 기호가 +, - 일 경우

            while True:

                if Ls[-1]=="(" or Ls[-1]==")": #직전 들이 +,-보다 가치가 낮을 경우까지 반복 혹은 괄호를 만나거나

                    break

                Ln.append(Ls[-1])

                if Ls[-1]=="&":

                    Ln.pop()

                Ls.pop()

                if len(Ls)==0:

                    break

            Ls.append(Input[i])

        elif Input[i]=='*' or Input[i]=='/': #입력 받은 기호가 *, / 인 경우

            while True:

                if Ls[-1]=="+" or Ls[-1]=="-":

                    break

                elif Ls[-1]=="(" or Ls[-1]==")":

                    break

                else:

                    Ln.append(Ls[-1])

                    if Ls[-1]=="&":

                        Ln.pop()

                    Ls.pop()

                if len(Ls)==0:

                    break

            Ls.append(Input[i])

        else: #입력 받은 기호가 괄호 일 때

            Ls.append(Input[i])

for i in range(len(Ls)): #Ln에 Ls 집어넣기, 괄호 미포함

    if Ls[-1]!='(' and Ls[-1]!=')':

        Ln.append(Ls[-1])

        Ls.pop()

    else:

        Ls.pop()

Equation=[]

num1=0

num2=0

for i in range(len(Ln)):

    if Ln[i]!='+' and Ln[i]!='-' and Ln[i]!='*'and Ln[i]!='/' and Ln[i]!="(" and Ln[i]!=")":

        Equation.append(Ln[i])

    elif Ln[i]=='+':

        num1, num2 = float(Equation[-1]), float(Equation[-2])

        Equation.pop()

        Equation.pop()

        Equation.append(num1+num2)

    elif Ln[i]=='-':

        num1, num2 = float(Equation[-1]), float(Equation[-2])

        Equation.pop()

        Equation.pop()

        Equation.append(num2-num1)

    elif Ln[i]=='*':

        num1, num2 = float(Equation[-1]), float(Equation[-2])

        Equation.pop()

        Equation.pop()

        Equation.append(num1*num2)

    elif Ln[i]=='/':

        num1, num2 = float(Equation[-1]), float(Equation[-2])

        Equation.pop()

        Equation.pop()

        Equation.append(num2/num1)

print("계산 결과는 %.2f 입니다." %Equation[0])


물론 IDLE 쉘에 입력만해도 자동계산 해주긴 하지만 연습 삼아 +, -, (, ), *, / 연산까지 가능한 계산기를 만들어봄.

근데 계산기는 stack 활용해서 만드는게 아니였음?
친구가 누가 계산기를 이렇게 만듦;; 이러는데 맞지 않나?