python - 我想在洗牌前回忆我的 Deck 类来洗牌以恢复牌组,这样我就不会洗牌少于 52 张牌的牌组
问题描述
好的,伙计们,我正在上甲板课,我想制作我的甲板,以便在发牌时,我可以在洗牌时恢复甲板。我认为它可以调用具有相同类名的类但 python raise "TypeError: restore_deck() missing 1 required positional argument: 'self'"
class Card:
def __init__(self, value, suit):
self.value = value
self.suit = suit
class Deck:
def __init__(self):
suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
values = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
self.cards = [Card(value, suit) for suit in suits for value in values]
def shuffle(self):
def restore_deck(self):
self = Deck()
if self.count() < 52: # |here is the problem!
restore_deck(self)# |
shuffle(self.cards)
return self
解决方案
我认为您的意思是您从 Deck 中的卡片列表中删除卡片,您想要做的是洗牌所有 52 张卡片,为此我们可以做的是随机导入模块以及何时我们想要洗牌我们可以重新创建卡片列表,然后将完整列表洗牌。我添加了 repr 方法,以便您可以清楚地看到输出。如果您不想重新生成整个列表,您可以改为存储“已移除”的卡片并在洗牌之前将它们重新添加到列表中。
import random
class Card:
def __init__(self, value, suit):
self.value = value
self.suit = suit
def __repr__(self):
return str((self.suit, self.value))
class Deck:
def __init__(self):
self.suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
self.values = ['A', '2', '3', '4', '5', '6',' 7', '8', '9', '10', 'J', 'Q', 'K']
self.cards = [Card(value, suit) for suit in self.suits for value in self.values]
def shuffle(self):
self.cards = [Card(value, suit) for suit in self.suits for value in self.values]
random.shuffle(self.cards)
d = Deck()
print(d.cards)
d.shuffle()
print(d.cards)
推荐阅读
- angular6 - Angular6如何继续添加带有选定值的下拉列表
- c - IOCTL 可以用于向驱动程序发送自定义输入吗
- c# - Xamarin Forms 文件不会在使用之间结转
- razor - 在 ASP.NET 核心 2.1 中动态加载程序集时,TagHelpers 不起作用
- windows - 如何在 Win32 应用程序中检测 Windows 10 亮/暗模式?
- android - 具有负边距的视图被剪裁
- javascript - 无法验证对象中的对象
- mysql - 在 sql 查询中使用 LIKE 时出现语法错误
- python-3.x - pivot_table 在 Pandas 中返回 KeyError
- node.js - 回调不返回数据