这是我第一次问。
我为discord.py制作了21点但有时回复我的是"没有"。所以我试着调试并找到了原因。
def deck(self):
card_type = ["Club ", "Diamond ", "Spade ", "Heart "]
card_nums = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "K", "Q", "A"]
cards_total = [i + j for i in card_type for j in card_nums]
random.shuffle(cards_total)
pop_card = cards_total.pop()
if pop_card in self.overlap_check:
Test.deck(self)
return
self.overlap_check.append(pop_card)
return self.overlap_check[-1]
如果我自己尝试这个,它工作得很好。但如果我调用func = deck(self),有时我可以看到返回结果为None。我认为这个错误是由那里发生的。
if pop_card in self.overlap_check:
Test.deck(self)
return
但是我不能再思考如何重制这个算法。请让我知道如何重叠登记名单和打破。
更新If块
if pop_card in self.overlap_check:
return Test.deck(self)
问题是:当pop_card in self.overlap_check
为真时,脚本在这里第二次调用函数:Test.deck(self)
所以让我们说函数的第二次调用返回"俱乐部2"。现在下一行return
将被执行,它将返回None。因此,删除这一行,直接返回第二个函数调用返回的值。