파이썬 스택 질문!
조회수 882회
안녕하세요. 지금 스택을 이용해서 계산기를 구현하고 있습니다.
지금 문제가 정수만을 입력하면 문자열로 리스트에 잘 저장이 됩니다. ex) 1+2/3 [1,+,2,/,3]
그런데 실수를 저장하려고 하는데 도저히 모르겠어서 질문드립니다.
ex)1.2+3/4 내가 원하는 값[1.2,+,3,/,4]
구글링을 해도 잘 안나옵니다.. 도와주시면 감사하겠습니다.
지금 제가 코딩 하고 있는 부분은 elif token in '.':
이 부분 입니다.
저는 .이라는 문자열이 들어오면 문자열을 기준으로 앞 과 뒤를 추가하려고 했습니다. 그런데 그게 아닌거 같아서 질문드립니다.
class Stack:
def __init__(self):
self.items = []
def push(self, val):
self.items.append(val)
def pop(self):
try:
return self.items.pop()
except IndexError:
print("Stack is empty")
def top(self):
try:
return self.items[-1]
except IndexError:
print("Stack is empty")
def __len__(self):
return len(self.items)
def isEmpty(self):
return self.__len__() == 0
def get_token_list(expr):
opstack = Stack()
outstack = []
token_list = expr
for token in token_list:
print(token)
if token == '(':
opstack.push(token)
elif token == ')':
opstack.push(token)
elif token in '+-/*^': #opstack에 자기 자신보다 우선순위 높은 연산자 pop하기
#while (not opstack.isEmpty()) and \
#(prec[opstack.top()] >= prec[token]):
#outstack.append(opstack.pop())
#print(outstack)
# print(opstack)
opstack.push(token)
elif token in '.':
outstack.append(opstack.top()+token)
opstack.push(token)
elif opstack.pop() == '.': # . 일때
outstack.append(opstack.pop()+opstack.top()+token)
opstack.push(token)
#outstack.append(opstack.top())
#if outstack in '.':
# outstack.append(str(opstack.pop()+'.'+opstack.pop()))
outstack.append(opstack.pop())
return print(outstack)
expr = input()
value = get_token_list(expr)
#value = compute_postfix(infix_to_postfix(get_token_list(expr)))
#print(value)
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력