繁体   English   中英

为什么我的变量返回无,即使被定义

[英]Why does my variable return None, Even though being defined

我目前正在做一个需要我制作游戏的 python 项目; 我已经定义了一个名为Game的 class ,它在初始化时需要P1P2Player class 实例)。

然后我定义了一个名为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)

random.shuffle 返回 None,它会在适当的位置随机播放,因此self.deck是 None。

random.shuffle()不返回任何东西。

在推荐的文档中使用random.sample()代替。

...
   self.deck = random.sample(self.deck, k=len(self.deck))
...

看看这个资源: https://www.w3schools.com/python/ref_random_shuffle.asp

Python 的 random.shuffle(list) 会随机播放,因此无需将变量设置为结果。

''' 随机导入

甲板=列表(itertools.product(范围(1, 14),['红色','黑色','黄色']))

random.shuffle(甲板)

print("玩家一拿到")

对于范围(5)中的 p1:打印(甲板[p1][0],“的”,甲板[p1][1])

print("\n player tow got") for p2 in range(5): print(deck[p2][0], "of", deck[p2][1])

问题出现在 append 行之后。 '''

在其他评论中已经说过, random.shuffle(list) 随机播放。 所以你可以做的是:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM