-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
- 콘솔 스마트 계산기 관련 질문 드립니다.
20.03.03 08:38 작성 조회수 138
1
안녕하세요! 남박사님.
잘 알려주신 덕분에 원활히 해당 콘솔 스마트 계산기 강의를 넘어갔는데 복습하던중 한가지 궁금증이 있어 문의드립니다.
아래의 string_calculator 함수안에 user_input매개변수 용도는 이해가지만 """show_history=Fasle""" 의 용도가
이해가 가질않습니다. """show_history=Fasle""" 빼고 로직을 실행해도 어떠한 차이를 느끼지 못했는데 혹시
사용용도가 어떤것인지 알려주시면 감사하겠습니다. 하단에 전체적인 코드 작성표를 스크린샷 첨부하였습니다.
항상 감사드립니다!
def string_calculator(user_input, show_history=False):
# 콘솔 스마트 계산기
# enumerate는 문자열을 각각 인덱스 한다 ex: 안녕하세요 -> 안 녕 하 세 요 나눠준다.
# user_input[-1] 안에 -1은 인덱싱 맨끝을의미 순서는 1,2,3,4 마지막부터는 역으로 -1,-2,-3
import os
operator = ["+", "-", "*", "/", "="]
def string_calculator(user_input, show_history=False):
string_list = []
lop = 0
## 입력된 계산식을 리스트화 시키는 로직
# 계산식 입력시 연산 앞까지만 데이터를 넣으니깐 임의로 연산자를 넣어서 데이터를 넣고 마지막에 연산자를 제거
if user_input[-1] not 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(0, str(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") # 계속하려면 아무 키나 누르십시오 ... 나오게 하는것
답변을 작성해보세요.
1
남박사
지식공유자2020.03.03
def string_calculator(user_input, show_history=False):
위 함수에서 show_histoy 매개변수는 단지 개발과정에서 계산식을 출력하여 어떻게 계산되는지를 print 해볼 목적으로 사용되는 내용으로 실제 함수의 기능 동작과는 큰 상관 없는 부분입니다.
string_calculator(user_input, show_history=True)
이렇게 호출해보시면 계산과정이 모두 화면에 출력됩니다.
답변 1