Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将整数队列的输入作为输入,并将其转换为具有平方元素的队列_Python_Queue - Fatal编程技术网

Python 将整数队列的输入作为输入,并将其转换为具有平方元素的队列

Python 将整数队列的输入作为输入,并将其转换为具有平方元素的队列,python,queue,Python,Queue,squareElems:一个函数,它将整数队列作为输入,并将其转换为包含相同元素的队列。例如,如果输入队列最初包含(2、4、6、8),则应用此函数应将其内容更改为:(4、16、36、64) 类队列: def __init__ (self): """Create an empty queue.""" self._data = [ ] # nonpublic list instance def __len__(self):

squareElems:一个函数,它将整数队列作为输入,并将其转换为包含相同元素的队列。例如,如果输入队列最初包含(2、4、6、8),则应用此函数应将其内容更改为:(4、16、36、64)

类队列:

def __init__ (self):
    """Create an empty queue."""
    self._data = [ ] # nonpublic list instance

def __len__(self):
    """Return the number of elements in the queue."""
    return len(self._data)

def is_empty(self):
    """Return True if the queue is empty."""
    return len(self._data) == 0

def enqueue(self, e):
    """Add element e to the rear of the queue."""
    self._data.insert(0, e) # new item stored at the beginning of the list

def peek(self):
    """Return (but do not remove) the element at the  front of the queue. Raise Empty exception if the queue is empty. """
    if self.is_empty():
        raise QueueEmpty('Queue is empty')
    return self._data[-1] # the last item in the list

def dequeue(self):
    """Remove and return the element from the front of the queue (FIFO). Raise Empty exception if the queue is empty. """
    if self.is_empty():
        raise QueueEmpty("Queue is empty")
    return self._data.pop() # remove the last item item from list

   
def __str__(self):
    stack_rep = "Current contents of the queue:\n"
   
    for el in self._data:
        stack_rep +=str(el) + ' '
       
    return stack_rep

def sqaureElems(self):

    def sqaure(n):
        return n**2

    number = int(input('Please enter a number: '))
    number2 = square(number)
    return number2
       
           
    print('Current contents of the queue:')
           
    print('Calling sqaureElems() on the queue...:')
    print('Current contents of the queue')
   
def main():

如果name==“main”: main()

输出显示如下所示:

队列的当前内容 2 4 6 8

正在队列上调用sqaurelems()

队列的当前内容:
4 16 32 64

如果我正确理解您的要求,您可以这样做:

from queue import Queue


def sqaure_elems(q):
    q.put("STOP")

    while (item := q.get()) != "STOP":
        q.put(item * item)
        q.task_done()

    q.task_done()

def main():
    q = Queue()

    for item in range(2, 10, 2):
        q.put(item)

    sqaure_elems(q)

    while not q.empty():
        print(q.get())
        q.task_done()

    q.join()


if __name__ == "__main__":
    main()
注意:

walrus操作符(
:=
)是可用的,因为Python3.8+

您假装输出显示为:…2 4 6 8,而实际上它是
8 6 4 2
-可能您对将
队列的后部
等同于
列表的开头感到困惑。
from queue import Queue


def sqaure_elems(q):
    q.put("STOP")

    while (item := q.get()) != "STOP":
        q.put(item * item)
        q.task_done()

    q.task_done()

def main():
    q = Queue()

    for item in range(2, 10, 2):
        q.put(item)

    sqaure_elems(q)

    while not q.empty():
        print(q.get())
        q.task_done()

    q.join()


if __name__ == "__main__":
    main()