Itsellä tuli projektin kanssa pieni ongelma kun Pythonissa ei ole pinoja. Noh, eipä muuta kuin uusi luokka kehiin. En ole varma, että onko Pythonissa jo valmiina pino-ominaisuudet.
# -*- coding: latin1 -*-
## -*- coding: cp850 -*-
class Stack:
sta = [0]
def __init__(self):
self.sta[0]=0
def __call__(self,d=1):
ret=self.Pop()
if d: self.Clear()
return ret
def Put(self,num):
self.sta[0]=self.sta[0]+1
self.sta.append(num)
#It's not needed to use these.
def Pop(self):
return self.sta[self.sta[0]]
def Move(self,m):
self.sta[0]=self.sta[0]+m
def Clear(self):
self.sta[self.sta[0]]=0
self.sta.remove(0)
self.sta[0]=self.sta[0]-1
#Mathematic functions
def Copy(self):
self.sta.append(self.sta[self.sta[0]])
self.Move(1)
def Plus(self):
self.sta[self.sta[0]-1]=self.sta[self.sta[0]-1]+self.sta[self.sta[0]]
self.Clear()
def Minus(self):
self.sta[self.sta[0]-1]=self.sta[self.sta[0]-1]-self.sta[self.sta[0]]
self.Clear()
def Multiplication(self):
self.sta[self.sta[0]-1]=self.sta[self.sta[0]-1]*self.sta[self.sta[0]]
self.Clear()
#Other
def Swap(self):
a=self.sta[self.sta[0]]
self.sta[self.sta[0]]=self.sta[self.sta[0]-1]
self.sta[self.sta[0]-1]=a
def Over(self):
a=self.Pop()
self.sta[self.sta[0]]=self.sta[self.sta[0]-2]
self.sta[self.sta[0]-2]=a
# Kommentit näyttävät pinon sisällön.
s=Stack()
s.Put(3) # 3
s.Copy() # 3 3
s.Copy() # 3 3 3
s.Multiplication() # 3 9
s.Swap() # 9 3
s.Put(2) # 9 3 2
s.Put(1) # 9 3 2 1
print s() # 9 3 2
print s() # 9 3
print s() # 9
print s() #
raw_input("Lopeta painamalla entteriä.")Koodi ei ole kovin mallikelpoista, ainakin Pop ja Clear toimivat väärin, ja sitä paitsi Pythonin lista toimii hyvin myös pinona:
s = [] s.append(3) s.append(s[-1]) s.append(s[-1]) s.append(s.pop() * s.pop()) s[-1], s[-2] = s[-2], s[-1]
Aihe on jo aika vanha, joten et voi enää vastata siihen.