[英]Why does my function return None everytime it is called even though it has a return statement
[英]Why does my variable return None, Even though being defined
我目前正在做一个需要我制作游戏的 python 项目; 我已经定义了一个名为Game
的 class ,它在初始化时需要P1
和P2
( Player
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.