我的任務是做一個模擬一系列卡片的卡片技巧。順序是第一張牌被取出放在最底下,第二張牌放在桌子上。重復這個程序,直到所有牌都放在桌子上。如果您有“Q_kort”中給出的順序,您將按大小順序排列卡片(1、2、3...等)。不知道怎么做這個程序。嘗試使用 forloop,但它對所有元素都一視同仁。你如何使它成為其他所有元素?我們應該用一個陣列來做。下面是我得到的,但并沒有真正起作用。
from array import array
Q_kort = array("i", [7, 1, 12, 2, 8, 3, 11, 4, 9, 5, 13, 6, 10])
class Kort:
def __init__(self, Q_kort):
self.__Q_kort = Q_kort
def enqueue(self, x):
sist = self.__Q_kort.append(x)
return sist
def dequeue(self):
forst = self.__Q_kort.pop(0)
return forst
def magic():
kort = Kort(Q_kort)
for element in Q_kort:
kort.dequeue()
kort.enqueue(element)
print(element)
magic()
uj5u.com熱心網友回復:
利用collections.deque
前任)
In [1]: from collections import deque
In [2]: d = deque()
In [3]: d.append(1)
In [4]: d.append(2)
In [5]: d.appendleft(3)
In [6]: d.append(4)
In [7]: d.appendleft(5)
In [8]: d
Out[8]: deque([5, 3, 1, 2, 4])
In [9]: d.pop()
Out[9]: 4
In [10]: d.popleft()
Out[10]: 5
In [11]: d
Out[11]: deque([3, 1, 2])
uj5u.com熱心網友回復:
這真的比你想象的要簡單得多,你甚至不需要定義一個類、兩個函式等(順便說一句,append
不回傳值,所以sist = self.__Q_kort.append(x)
分配None
給sist
)。只需按照要求使用卡片,直到您沒有更多卡片:
def magic(arr):
while arr:
arr.append(arr.pop(0)) #one card to the bottom
print(arr.pop(0)) #one card on the table
magic(array("i", [7, 1, 12, 2, 8, 3, 11, 4, 9, 5, 13, 6, 10]))
1
2
3
4
5
6
7
8
9
10
11
12
13
uj5u.com熱心網友回復:
我想這就是你想要做的
from array import array
from collections import deque
Q_kort = [7, 1, 12, 2, 8, 3, 11, 4, 9, 5, 13, 6, 10]
class Kort(deque):
def __init__(self, Q_kort):
super().__init__(Q_kort)
def enqueue(self):
out = super().popleft()
super().append(out)
#print('out:',out)
def dequeue(self):
forst = self.popleft()
return forst
def magic():
output = []
kort = Kort(Q_kort)
for _ in Q_kort:
kort.enqueue()
out = kort.dequeue()
print(out)
output.append(out)
return output
output = magic()
print(output)
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505805.html