inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

남박사의 파이썬 기초부터 실전 100% 활용

- 콘솔 스마트 계산기 관련 질문 드립니다.

205

풍선몰리

작성한 질문수 5

1

안녕하세요! 남박사님.

잘 알려주신 덕분에 원활히 해당 콘솔 스마트 계산기 강의를 넘어갔는데 복습하던중 한가지 궁금증이 있어 문의드립니다.

아래의  string_calculator 함수안에 user_input매개변수 용도는 이해가지만 """show_history=Fasle""" 의 용도가 

이해가 가질않습니다.  """show_history=Fasle""" 빼고 로직을 실행해도 어떠한 차이를 느끼지 못했는데 혹시

사용용도가 어떤것인지 알려주시면 감사하겠습니다. 하단에 전체적인 코드 작성표를 스크린샷 첨부하였습니다.

항상 감사드립니다!

def string_calculator(user_inputshow_history=False):

# 콘솔 스마트 계산기 
# enumerate는 문자열을 각각 인덱스 한다 ex: 안녕하세요 -> 안 녕 하 세 요 나눠준다.
# user_input[-1] 안에 -1은 인덱싱 맨끝을의미 순서는 1,2,3,4 마지막부터는 역으로 -1,-2,-3
import os

operator = ["+""-""*""/""="]

def string_calculator(user_inputshow_history=False):
    string_list = []
    lop = 0


    ## 입력된 계산식을 리스트화 시키는 로직

    # 계산식 입력시 연산 앞까지만 데이터를 넣으니깐 임의로 연산자를 넣어서 데이터를 넣고 마지막에 연산자를 제거
    if user_input[-1not in operator:
        user_input += "="

    # user_input = input("계산식을 입력하세요: ") 계산값 인덱싱 5 + 5 -> ["5","+","5"]
    for i, s in enumerate(user_input):
        # operator = ["+", "-", "*", "/", "="] 만날때 동작
        if s in operator:
            if user_input[lop:i].strip() !="":
                string_list.append(user_input[lop:i])
                string_list.append(s)
                lop = i + 1


    string_list = string_list[:-1]            




    # 아래는 계산하는 로직
    # 10 + 20 + 30 + 30 입력할때 이 로직이 계산하는 방법 앞에 한덩어리 계산후 삭제 계산후 삭제 됨.

    # ['10 ', '+', ' 20 ', '+', ' 30 ', '+', ' 30'] 1번
    # ['30', '+', ' 30 ', '+', ' 30'] 2번
    # ['60', '+', ' 30'] 3번
    # ['90'] 4번  최종계산

    pos = 0
    while True:
        if pos + 1 > len(string_list):
            break
        if len(string_list) > pos + 1 and string_list[pos] in operator:
            temp = string_list[pos-1] + string_list[pos] + string_list[pos + 1]
            del string_list[0:3]
            # insert는 리스트 내용을 앞에다가 추가 append는 리스트 내용을 뒤에서부터 추가
            string_list.insert(0str(eval(temp))) 
            pos = 0

            #리스트 계산 어떻게 되나 확인
            # show_histrory True면 실행 맨 밑에 입력 함수 값 인풋에서  result = string_calculator(user_input, show_history=True)  True를 넣어줌
            if show_history:
                print(string_list)

        pos += 1
        

    if len(string_list) > 0 :
        result = float(string_list[0])

    return round(result, 4)

while True:
    os.system("cls")
    user_input = input("계산식을 입력하세요: ")
    # 계산기 반복하다가 나갈려고 할때 /exit 치면 됨.
    if user_input == "/exit":
        break
    result = string_calculator(user_input, show_history=True## 함수 안에 있는건 지역 변수 함수 밖에 있는건 전역 같은 변수라도 함수 안에 있는지 밖에있는지 차이가 있어서 중복되도 별개로 봄.
    print("결과 : {}".format(result))
    os.system("pause"# 계속하려면 아무 키나 누르십시오 ... 나오게 하는것



python 웹-크롤링

답변 1

1

남박사

def string_calculator(user_inputshow_history=False):

위 함수에서 show_histoy 매개변수는 단지 개발과정에서 계산식을 출력하여 어떻게 계산되는지를 print 해볼 목적으로 사용되는 내용으로 실제 함수의 기능 동작과는 큰 상관 없는 부분입니다.

string_calculator(user_input, show_history=True)

이렇게 호출해보시면 계산과정이 모두 화면에 출력됩니다.

38강 = 연산자 더하고 빼기

0

60

2

주석처리

0

117

1

함수의 파라미터값 msg

0

155

1

강의자료 이미지 안나옴

0

239

3

강의자료 질문 두번째

0

165

3

강의자료 관련 질문

0

116

1

파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.

0

235

1

소수 너무 어려워요

0

245

1

imagefont 함수 사용

0

239

1

pylint

0

357

1

add 함수 문의 ㅠㅠ

0

283

1

형식 문의드립니다.

0

209

1

변수 명을 왜 src, tar로 하셨는지 궁금합니다.

0

602

1

숫자야구 코드를 짜 봤는데 뭔가 이상합니다.

0

253

1

zsh: command not found: pylint

0

269

1

텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ

0

546

1

질문드립니다.

1

374

2

list.reverse() 출력에 대해서 질문있습니다.

1

433

1

데코레이터 함수 및 동작시간 질문입니다.~

1

323

2

opencv 사용하면서 궁금한점 (해상도)

1

781

1

질문드립니다.

1

299

1

아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?

1

445

1

크롤링안되는 현상 문의 드립니다.

1

421

1

파이썬 크롤링 관련 문의

1

277

1