我正在用Python做一个BlackJack游戏,但是它不遵守我的索引要求。它会从我的所有子列表中弹出一个随机元素,而不仅仅是从一个列表中弹出。
import random
class Deck(object):
def __init__(self):
self.deck_of_cards = []
self.base = []
for i in range(0, 13):
troca = {
0: 'A',
10: 'J',
11: 'Q',
12: 'K'
}
if not i in (0, 10, 11, 12):
self.base.append(i + 1)
else :
self.base.append(troca.get(i))
for i in range(0, 4):
self.deck_of_cards.append(self.base)
def random_card(self, quantidade):
print(self.deck_of_cards)
for i in range(0, quantidade):
self.deck_of_cards[random.randint(0, 3)].pop(random.randint(0, 13))
print(self.deck_of_cards)
bar = Deck()
bar.random_card(2)
答案 0 :(得分:1)
查看显着代码:
for i in range(0, 4):
self.deck_of_cards.append(self.base)
您没有四个单独的子列表:您有四个对 same 子列表的引用。如果要四个原始副本,则必须制作这些副本。试试这个:
for i in range(0, 4):
self.deck_of_cards.append(self.base[:])
答案 1 :(得分:1)
for i in range(0, 4):
self.deck_of_cards.append(self.base
您的列表deck_of_cards
包含对列表base
的4个引用
您需要将新列表插入您的deck_of_cards卡中,而不是一遍又四遍!
此代码也已损坏,但我让您自己弄清楚原因
self.deck_of_cards[random.randint(0, 3)].pop(random.randint(0, 13))