Вставить элемент из списка в список [Python 3.x] - PullRequest
0 голосов
/ 19 октября 2018

Я делаю игру в блэкджек на Python, но она не соответствует моей индексации.Он выдает случайный элемент из всех моих подсписков, а не только из одного списка.

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)

Ответы [ 2 ]

0 голосов
/ 19 октября 2018
for i in range(0, 4):
    self.deck_of_cards.append(self.base

Ваш список deck_of_cards содержит 4 ссылки на ваш список base

Вам необходимо вставить новые списки в ваши deck_of_cards, а не 4 раза!

Также, этот код не работает, но я дам вам понять, почему самостоятельно

self.deck_of_cards[random.randint(0, 3)].pop(random.randint(0, 13))
0 голосов
/ 19 октября 2018

Посмотрите на существенный код:

for i in range(0, 4):
    self.deck_of_cards.append(self.base)

У вас нет четырех отдельных подсписков: у вас есть четыре ссылки на такой же подсписок. Если вы хотите четыре копии оригинала,Вы должны сделать эти копии.Попробуйте это:

for i in range(0, 4):
    self.deck_of_cards.append(self.base[:])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...