I am trying make a function that takes a number as a parameter and removes all occurrences of it from a Queue
class Queue: def __init__(self): self.items =  def is_empty(self): return self.items ==  def add(self, item): self.items.append(item) def remove(self): self.items.reverse() return self.items.pop()
I need to create a function that takes in a number as a parameter and a queue then removes every occurrence of that number in the queue but with the exception of the omissions. I've put up a model of what my Queue looks like above and I'll put a model of what the queue should somewhat look like (It's very messy and in its early stages) below.
def remove_item(q, val): q_temp = Queue while not q.is_empty(): q_temp.add(q.remove) remove_item()
I cannot directly modify it in any way and I can't put the elements of the Queue in a normal list. Anyone got any solutions?
Edit: Also it needs to be executable in IDLE like this
What I would do is something like this:
number_to_remove = 123 for i in range(0, queue.length()): number = queue.remove() if number != number_to_remove: queue.add(number)
That way you "loop" trough the queue, you look at every number and if it's not the number you should remove then just add it again. You need to create the
That code will fail because bad indentation:
def remove_item(q, val): #> q_temp = Queue
And you're setting
q_tempto the class, not to an instance, making that it can't be modified.
q_temp = Queue()
.removemethod doesn't work, there's an easier way to make it work:
def remove(self): return self.items.pop(-1)
But I don't have a (fully valid) answer. I we could get the queue's items, I'd use conditional list comprehensions for deleting determinated items, and applying that into the queue.
def removeFromQueue(queue, value = ""): items = queue.items queue.items = [i for i in items if i != value] return queue
You can do if you let us to use the
Queueclass use only the class methods (we can make variables, make another queues,
.addnumbers, but not to use
.items) you can do this:
def removeFromQueue(queue, value = ""): items =  for i in len(queue): items.append(queue.remove()) items = [i for i in items if i != value]: for i in items: queue.add(items.pop(0))
I don't think that's valid, though. And it would need defining
def __len__(self): return len(self.items)
* or modififying the code and defining
__iter__or some sort of thing like that