#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목Quiz2 분석글입니다.2019-10-16 21:15
작성자

"""
수업시간에 이성원교수님께서 str메소드 함수를 잘 알아두라고 말씀 하셨습니다.
이번 문제는 str메소드 함수를 잘 알고 있는지 확인하는 문제였던 것 같습니다.

저같은 경우도 help(str)을 쳐 놓고 찾아가며 풀었습니다.
저는 __쏼라쏼라__ <- 이런 함수는 안쓰고
깔끔한 이름의 (find, isdecimal같은) 함수만 사용합니다.

제가 밑에 설명하는 문제를 본 뒤 직접 help써서 보시면서 만드시길 바랍니다.
"""

def Add(first,second) : return first + second
def Sub(first,second) : return first - second
def Multi(first,second) : return first*second
def Divide(firstsecond):
    if(second == 0):
        return ("Unvaild value : divide by zero")
    else:
        return first/second
#여기 위에 까지는 이해가 되실거라 믿습니다.


def calc(tstr):
    #tstr은 입력받은 변수(타입 : 문자열(str)) 입니다. 

    temp = tstr.find(' ')
    #str의 find기능은 괄호 안 문자(열)의 인덱스를 찾아줍니다.(정수(int)로 저장) 못찾으면 -1을 반환합니다.

    if temp == -1:
        #입력한 문자열 안에 빈 공간이 없다! 그럼 잘못쓴거죠
        print("잘못된 형식 : 띄어쓰기 해주시길 바랍니다")
    else:
        #종이에 집적 써보며 따라가시길 바랍니다.
        #빈 공간의 위치를 temp에 저장했습니다.
        tfirst = tstr[:temp]
        #tfirst에 입력받은 문자열의 첫번째 빈공간이 나오는 곳까지 저장합니다.
        tsecond = tstr[temp+3:]
        #정상적으로 입력했다면 위의 식은 두번째 숫자들을 저장할 것입니다.
        #여기서 주의하실것은 아직 tfirst와 tsecond는 문자열 입니다.
        toper = tstr[temp+1]
        #toper에는 첫번째 빈공간 뒤의 값(정상적이라면 + - * / 하나겠죠)을 저장합니다.

        if tfirst.isdecimal() and tsecond.isdecimal():
            #isdecimal은 그 문자열이 10진수로만 이루어졌는지 확인하는 것입니다
            #정상적으로 입력했다면 둘다 true가 되서 밑에 loop가 작동되겠죠
            tfirst = int(tfirst)
            tsecond = int(tsecond)
            #두 문자열을 정수형으로 바꿔줍니다.
            if toper == '+':
                print(Add(tfirst,tsecond))
            elif toper == '-':
                print(Sub(tfirst,tsecond))
            elif toper == '*':
                print(Multi(tfirst,tsecond))
            elif toper == '/':
                print(Divide(tfirst,tsecond))
            else:
                #연산하는 문자가 이상한게 들어가면 실행됩니다.
                print("잘못된 연산 문자입니다.")
        else:
            #tfirst와 tsecond 둘 중 하나라도 숫자이외의 값이 존재하면(빈칸 포함) 실행됩니다.
            print("잘못된 입력 입니다.")


#이 밑은 코드가 잘 작동되는지 알아보는 것입니다.

#저희는 입력값이 exit이면 프로그램을 중단할 것입니다.
#밑에 보시면 while문 전에 미리 inputData를 만들었는데, 이렇지 않으면 while문이 정상적으로 작동하지 않습니다.
#왜냐면 inputData가 없는데 exit과 비교하라고 하기 때문이죠.
#따라서 while앞에 미리 빈 문자열 변수를 만들어 줍니다.

inputData=''
while(inputData != exit):
    inputData = input("input : ")
    if inputData == 'exit':
        break
    calc(inputData)
 
댓글
이전구구단 질문입니당2019-10-16
다음quiz22019-10-16