好的,所以即时尝试在堆栈中输入一个单词,我想在输入字符串后打印所有这些单词。所以我一次只能打印一张。我尝试在外部使用for循环,但Stacks显然不可迭代。所以我在堆栈内迭代它。它仍然无法正常工作。
class Stack:
def __init__(self):
self.items = []
def push(self,items):
self.items.insert(0,items)
def pop(self):
for x in self.items:
print( self.items.pop(0))
def show(self):
print (self.items)
s = Stack()
s.show()
placed = input("enter")
item = s.pop()
print(item, "is on top", s)
答案 0 :(得分:0)
给你的Stack
班级__len__
method,这样可以更容易地测试堆栈是否为空:
class Stack:
def __init__(self):
self.items = []
def push(self,item):
self.items.append(item)
def pop(self):
return self.items.pop()
def show(self):
print (self.items)
def __len__(self):
return len(self.items)
stack = Stack()
stack.push('World!')
stack.push('Hello')
while stack: # tests the length through __len__
print(stack.pop())
请注意,我只是.append()
到.items
列表的末尾,然后再次.pop()
(无参数),从列表的末尾删除。
要制作课程an iterable type,您需要至少添加__iter__
method,可选择添加.__next__()
method:
class Stack:
# rest elided
def __iter__(self):
return self
def next(self):
try:
return self.items.pop()
except IndexError: # empty
raise StopIteration # signal iterator is done