class zhan:
def __init__(self):
self.items=[]
def push(self,item):
self.items.append(item)
def pop0(self):
return self.items.pop(0)
def pop1(self):
return self.items.pop(-1)
def insert(self,i,item):
self.items.insert(i,item)
def checknum(self):
return len(self.items)
def zhanshou(self):
return self.items[0]
def shuchu(self):
return self.items
str1=input()
l=zhan()
n=0
s=['0','1','2','3','4','5','6','7','8','9']
for i in str1:
if i in s:
n=n*10+int(i)
else:
l.push(n)
l.push(i)
n=0
l.push(n)
l.push("stop")
while 'stop' in l.items:
if zhan.zhanshou(l)=='+' or zhan.zhanshou(l)=='-':
p=zhan.pop0(l)
if p=='+':
l.insert(0,zhan.pop1(l)+zhan.pop0(l))
else:
l.insert(0,zhan.pop1(l)-zhan.pop0(l))
elif zhan.zhanshou(l)=='stop':
zhan.pop0(l)
else:
l.push(zhan.pop0(l))
while zhan.checknum(l)!=1:
if zhan.zhanshou(l)=='*' or zhan.zhanshou(l)=='/':
p=zhan.pop0(l)
if p=='*':
l.insert(0,zhan.pop1(l)*zhan.pop0(l))
else:
if zhan.zhanshou(l)==0:
n=-1
break
else:
l.insert(0,zhan.pop1(l)/zhan.pop0(l))
else:
l.push(zhan.pop0(l))
if n!=-1:
if round(l.items[0],2)==-0.00:
print('0.00')
else:
print('%.2f'%l.items[0])
else:
print('0.00')
笔者在最初写出了下面这一段代码,但却无法运行,一番努力后也没有发现错误之处,还望大家指出。
class zhan:
def __init__(self):
self.items=[]
def push(self,item):
self.items.append(item)
def pop0(self):
return self.items.pop(0)
def pop1(self):
return self.items.pop(-1)
def insert(self,i,item):
self.items.insert(i,item)
def checknum(self):
return len(self.items)
def zhanshou(self):
return self.items[0]
def shuchu(self):
return self.items
str1=input()
l=zhan()
n=0
s=['0','1','2','3','4','5','6','7','8','9']
for i in str1:
if i in s:
n=n*10+int(i)
else:
l.push(n)
l.push(i)
n=0
l.push(n)
l.push("stop")
while 'stop' in l.items:
if zhan.zhanshou(l)=='+' or zhan.zhanshou(l)=='-':
p=zhan.pop0(l)
if p=='+':
l.insert(0,zhan.pop1(l)+zhan.pop0(l))
else:
l.insert(0,zhan.pop1(l)-zhan.pop0(l))
elif zhan.zhanshou(l)=='*' or zhan.zhanshou(l)=='/':
if "stop" in l.items:
x=0
else:
p=zhan.pop0(l)
if p=='*':
l.insert(0,zhan.pop1(l)*zhan.pop0(l))
else:
if zhan.zhanshou(l)==0:
n=-1
break
else:
l.insert(0,zhan.pop1(l)/zhan.pop0(l))
elif zhan.zhanshou(l)=='stop':
zhan.pop0(l)
else:
l.push(zhan.pop0(l))
if n!=-1:
print('%.2f'%l.items[0])
else:
print('0.00')