Этот код должен принимать вход ABCDEFG и извлекать из него элементы, используя стеки. Например: ADCDEFG и take D должны возвращать ABCEFG. Не уверен, почему он ничего не возвращает, кроме []. Я почти уверен, что функция стека классов работает так же, как раньше работала с другими кодами, возможно, в моей функции удаления? Какие-либо предложения? Я думаю, что мне нужно добавить что-то еще, просто не совсем уверен, что.
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
def __str__(self):
temp = Stack()
stringy = ""
while not self.isEmpty():
a = self.pop()
temp.push(a)
stringy = str(a) + stringy
while not temp.isEmpty():
self.push(temp.pop())
return "["+stringy+")\n"
def remove(Fstack, item):
Ustack = Stack()
#this loop will repeat itself until the stack is empty
while Fstack.isEmpty() == False:
out = Fstack.pop()
#If the numbers being pushed out are NOT the target, add them to a new stack
if out != item:
#pushes out aka all numbers not target into Ustack aka new atack
Ustack.push(out)
print(Ustack)
return Fstack
def main():
letters = "ABCDEFG"
st = Stack()
for c in letters:
st.push(c)
first = "D"
st = remove(st, first) #now st should be [ABCEFG)
print("after first", st.items) #cheating a bit - the stack is a list so we print it
second = "H"
st = remove(st, second) #st should still be [ABCEFG)
print("after second", st.items)
third = "A"
st = remove(st, third)
print("after third", st.items)
main()