打印list
时遇到问题。 random_itemst_stac
包含项目列表(cards
)。 for循环中的元素和索引的打印效果很好,但是当我打印整个数组时,其他项目都有X设置 - 这很奇怪。
Card
上课:
class Card(object):
def __init__(self, r=0):
self.__rank=0
self.__hidden= False
if type(r) == str:
if r in 'J':
self.__rank = 11 # Jack
elif r in 'Q':
self.__rank = 12 # Queen
elif r in 'K':
self.__rank = 13 # King
elif r in 'A':
self.__rank = 1 # Ace
elif type(r) == int:
if 1 <= r <= 14:
self.__rank = r
def hideCard(self, val):
self.__hidden= val
def isCardHidden(self):
return self.__hidden
def setRank(self, r):
self.__rank = r
def getRank(self):
return self.__rank
def getValue(self):
"""(Jack, Queen, King = 10), Ace = 1, reszta 2-10"""
if self.__rank <= 10:
return self.__rank
else:
return 10
def __repr__(self):
if self.__hidden:
return "X".rjust(3)
else:
nameString = "blk A 2 3 4 5 6 7 8 9 10 J Q K" # 'blk' for blank, i.e. no karty
nameList = nameString.split()
return (nameList[self.__rank]).rjust(3)
这是创建列表列表的方法(super_matrix):
random_items_stack包含CARD对象。
我还需要在行中显示最后一张卡片(其他卡片应隐藏 - repr
def setup():
super_matrix= [[],[],[],[],[],[],[],[],[],[]]
for x in range(54):
newItem= random_items_stack .pop()
super_matrix[x%10].append(newItem)
for y in range(10):
for z in range(0, len(plansza[y])):
if(z == (len(plansza[y])-1)):
print('index:')
print(y,z)
print('showed:')
plansza[y][z].hideCard(False)
print(plansza[y][z])
else:
print('index:')
print(y,z)
print('hidden:')
plansza[y][z].hideCard(True)
print(plansza[y][z])
print(super_matrix)
示例输出的片段:
index:
0 0
hidden:
X
index:
0 1
hidden:
X
index:
0 2
hidden:
X
index:
0 3
hidden:
X
index:
0 4
hidden:
X
index:
0 5
showed:
9
index:
1 0
hidden:
X
index:
1 1
hidden:
X
index:
1 2
hidden:
X
index:
1 3
hidden:
X
index:
1 4
hidden:
X
index:
1 5
showed:
8
index:
2 0
hidden:
X
index:
2 1
hidden:
X
index:
2 2
hidden:
X
index:
2 3
hidden:
X
index:
2 4
hidden:
X
index:
2 5
showed:
J
index:
3 0
hidden:
X
[[ X, X, X, X, X, X], [ X, X, X, X, X, X], [ X, 2, X, 2, X, J], [ X, X, X, X, X, X], [ 2, X, X, X, X], [ X, X, X, X, X], [ J, X, X, X, X], [ X, X, X, X, X], [ X, X, X, X, J], [ X, X, X, X, 2]]
答案 0 :(得分:0)
来自此评论:
@ user2357112她是卡片组的初始化(其来源为random_itemst_stac):self .__ talia = 8 * [j(范围内的卡片(j)(1,14)]
这意味着您对random_itemst_stac中的相同卡片有多个引用。
您应该为随机堆叠中所需的每张卡片制作一个新的Card
,而不是将列表相乘。
类似于:
self.__talia = [Card(j%13+1) for j in range(13*8)]
如果你想要每张卡1-13次,8次。