做逆波兰表达式的时候,代码运行后什么反应也没有,没有报错没有终止,shell里面可以输入,但是也没有任何反应,怎么回事呢?
class stack:
item = None
def __init__(self):
self.item = []
def push(self, i):
self.item.append(i)
def pop(self):
while not self.empty():
return self.item.pop()
def top(self):
try:
return self.item[-1]
except:
return None
def empty(self):
return len(self.item) == 0
stack1 = stack()
stack2 = stack()
formula = 'a+b'
deal_formula = list(formula)
for i in deal_formula:
if i == "(":
stack1.push(i)
elif i == ")":
while stack1.top() != "(":
stack2.push(stack1.top())
stack1.pop()
else:
stack1.pop()
continue
elif i == "*" or "/":
while stack1.top() == '*' or '/':
stack2.push(stack1.top())
stack1.pop()
else:
stack1.push(i)
continue
elif i == "+" or "-":
while stack1.top() == "(" or None:
stack1.push(i)
continue
else:
stack2.push(stack1.top())
stack1.pop()
else:
stack2.push(i)
while not stack1.empty():
stack2.push(stack1.top())
stack1.pop()
print stack2.item
if not stack2.item:
print 'wd'
else:
print '??'
elifi=="*"or"/":这一句错了,应该是elifi=="*"ori=="/":
i=="*"or"/"等价:(i=="*")or"/"
如果i为*则表达式为True,否则为"/"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。