Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从列表(玩家的手)中删除用户定义的对象(卡)_Python_Oop - Fatal编程技术网

在python中从列表(玩家的手)中删除用户定义的对象(卡)

在python中从列表(玩家的手)中删除用户定义的对象(卡),python,oop,Python,Oop,抱歉,我是python新手,抱歉,如果问题太简单的话。我正在尝试为一款名为pishti或bastra的纸牌游戏编写代码。很快,两个玩家(在我的例子中是一个用户和一台计算机)每个手都有4张牌,中间有一些卡在上面,玩家可以看到(其他人是封闭的)。很快,我就可以用四个卡片对象的列表为用户处理卡片。但是,在用户玩完他/她的一张卡后,我无法从列表中删除该卡,因为找不到该卡。(我尝试使用.remove()和del)但是,我可以使用list[index]访问卡 这是我的代码(简称为与此问题相关的部分): 随机

抱歉,我是python新手,抱歉,如果问题太简单的话。我正在尝试为一款名为pishti或bastra的纸牌游戏编写代码。很快,两个玩家(在我的例子中是一个用户和一台计算机)每个手都有4张牌,中间有一些卡在上面,玩家可以看到(其他人是封闭的)。很快,我就可以用四个卡片对象的列表为用户处理卡片。但是,在用户玩完他/她的一张卡后,我无法从列表中删除该卡,因为找不到该卡。(我尝试使用.remove()和del)但是,我可以使用list[index]访问卡 这是我的代码(简称为与此问题相关的部分):

随机导入
班级卡:
定义初始(自我、价值、适合):
自我价值=价值
西服
定义报告(自我):
返回f“{self.suit}{self.value}”
def执行(自我):
一无所获
舱面:
定义初始化(自):
套装=[“红桃”、“黑桃”、“梅花”、“钻石”]
数值=[“A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“J”、“Q”、“K”]
self.cards=[Card(value,suit)for value in values for suit in suit]
定义报告(自我):
返回f“组{self.count()}”
def计数(自身):
返回len(自我卡)
def随机播放(自):
如果self.count()小于52:
raise VALUERROR(“对不起,只有完整的牌组才能被洗牌。”)
随机。洗牌(自我。牌)
回归自我
定义交易(自身、待交易的卡数):
如果self.count()==0:
raise VALUE ERROR(“对不起,所有卡都已发了。”)
实际值=最小值(self.count(),待发牌数)
已发卡=自卡[-实际:]
self.cards=self.cards[:-实际]
退还已发的信用卡
def交易手(自身,手牌大小=4):
返回自我交易(手牌大小)
deste=甲板()
kar_deste=deste.shuffle()
orta=(kar_deste.deal_hand())
打印(f“中间的卡片:{orta[-1]}”)
用户分数=0
比较分数=0
而kar_deste.count()!=0:
计算机手=kar\u deste.deal\u hand()
user=kar\u deste.deal\u hand()
打印(f“您的卡:{user}”)
而len(用户)!=0:
卡片\套装=输入(“选择套装:”)
卡值=输入(“选择值:”)
打印(str(卡片(卡片价值、卡片套装)))
用户轮次=卡片(卡片价值、卡片套装)
卡片索引=用户索引(用户索引)
删除用户[卡片索引]
打印(用户)

当我运行此代码时,我遇到一个值错误(在user.index()行中),表示该卡不在列表中。但是,我可以通过手动使用它的索引来访问它。因此,我不知道为什么这不起作用。你知道这背后的原因吗?提前感谢。

.index
调用对象的
\uuuuueq\uuuuu
方法,因此您必须在
卡中实现它。否则,将根据对象的内存地址对其进行比较

可能的实施:

def __eq__(self, other):
    return all((isinstance(other, self.__class__),
                self.suit == other.suit,
                self.value == other.value))
然后

也许会有帮助。
def __eq__(self, other):
    return all((isinstance(other, self.__class__),
                self.suit == other.suit,
                self.value == other.value))
The card in the middle: Clubs 4
Your cards: [Diamonds 10, Hearts K, Clubs 10, Hearts 5]
Choose a suit: Hearts
Choose a value: 5
Hearts 5
[Diamonds 10, Hearts K, Clubs 10]
Choose a suit: Diamonds
Choose a value: 10
Diamonds 10
[Hearts K, Clubs 10]
Choose a suit: Hearts
Choose a value: K
Hearts K
[Clubs 10]
Choose a suit: Clubs
Choose a value: 10
Clubs 10
[]
...