Почему моя переменная возвращает None, хотя и определяется - PullRequest
0 голосов
/ 06 апреля 2020

В настоящее время я делаю проект python, который требует от меня создания игры; Я определил класс с именем Game, который при инициализации принимает P1 и P2 (Player экземпляры классов).

Затем я определил список с именем deck, который затем перетасовал и переопределил как новая перетасованная колода. Проблема в том, что когда я печатаю deck, он печатает None.

import random
class Game():
    deck = []
    def __init__(self, p1, p2):
        self.p1 = p1
        self.p2 = p2
        self.__generateCards()
    def __generateCards(self):
        colors = ['red', 'black', 'yellow']
        for x in range(0,3):
            for y in range(1,11):
                li = [colors[x], y]
                self.deck.append(li)
        self.deck = random.shuffle(self.deck)
        print(self.deck)

Ответы [ 5 ]

0 голосов
/ 06 апреля 2020

Как уже было сказано в других комментариях, random.shuffle (список) перемешивается на месте. Итак, что вы можете сделать:

import random
class Game():
    deck = []
    def __init__(self, p1, p2):
        self.p1 = p1
        self.p2 = p2
        self.__generateCards()
    def __generateCards(self):
        colors = ['red', 'black', 'yellow']
        for x in range(0,3):
            for y in range(1,11):
                li = [colors[x], y]
                self.deck.append(li)
        random.shuffle(self.deck)    #here, don't do self.deck = random.shuffle(self.deck)
        print(self.deck)
0 голосов
/ 06 апреля 2020

'' 'импортировать случайным образом

deck = list (itertools.product (range (1, 14), [' red ',' black ',' yellow ']))

random.shuffle (колода)

print ("Игрок получил один")

для p1 в диапазоне (5): print (дека [p1] [0], "of", колода [ p1] [1])

print ("\ n player tow got") для p2 в диапазоне (5): print (дека [p2] [0], "of", колода [p2] [1 ])

И проблема после добавления строки. '' '

0 голосов
/ 06 апреля 2020

random.shuffle() ничего не возвращает.

Используйте взамен random.sample(), как в Документы рекомендуется.

...
   self.deck = random.sample(self.deck, k=len(self.deck))
...
0 голосов
/ 06 апреля 2020

Взгляните на этот ресурс: https://www.w3schools.com/python/ref_random_shuffle.asp

Python. Random.shuffle (список) перемешивается, поэтому нет необходимости устанавливать переменную в результат.

0 голосов
/ 06 апреля 2020

random.shuffle возвращает None, оно тасуется на месте и, следовательно, self.deck равно None.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...