gpt4 book ai didi

python - 无法选择列表中的对象并将其删除

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:15 24 4
gpt4 key购买 nike

我现在总共花了一两个小时试图解决这个问题,但没有得到任何结果。在我的程序中,当防御动物被“杀死”时,它应该从它的注册表中删除,但无论我做什么,我似乎都无法实现这种情况。在这种情况下,如果我要启动一个猎人和一头水牛,然后用猎人攻击()水牛,那么水牛应该被杀死并从它的类注册表中删除,但我无法让 python 从注册表中选择该特定的水牛。/p>

感谢任何帮助。

class IterRegistry(type):
def __iter__(cls):
return iter(cls._registry)

class Buffalo(object):
__metaclass__ = IterRegistry
_registry = []
hp = 1
price = 150
attacks = 0
regeneration = 2

def __init__(self, name):
self._registry.append(self)
self.name = name

def createBuffalo():
for i in range(len(Buffalo._registry),len(Buffalo._registry)+1):
varname = ("b" + str(i))
globals()[varname] = Buffalo("b" + str(i))

class Wolf:
__metaclass__ = IterRegistry
_registry = []
hp = 1
price = 0
attacks = 2
regeneration = 1.5

def __init__(self, name):
self._registry.append(self)
self.name = name

def createWolf():
for i in range(len(Wolf._registry),len(Wolf._registry)+1):
varname = ("w" + str(i))
globals()[varname] = Wolf("w" + str(i))

class Hunter:
__metaclass__ = IterRegistry
_registry = []
hp = 2
price = 0
attacks = 1
regeneration = 0
balance = 0

def __init__(self, name):
self._registry.append(self)
self.name = name

def createHunter():
for i in range(len(Hunter._registry),len(Hunter._registry)+1):
varname = ("h" + str(i))
globals()[varname] = Hunter("h" + str(i))

def attack(attacker, target):
if attacker.attacks >= 1:
target.hp -= 1
if target.hp == 0:
if type(attacker) == Hunter:
attacker.balance += 150
print(target)
if type(target) == Wolf:
del Wolf._registry[[n for n in Wolf._registry if n == target]]
if type(target) == Hunter:
del Hunter._registry[[n for n in Hunter._registry if n == target]]
if type(target) == Buffalo:
del Buffalo._registry[[n for n in Hunter._registry if n == target]]

还有一点要注意,我使用双括号的原因是因为单括号的语法不正确,但双括号的语法很好。

如果您需要更多代码,请在下面的评论中询问(我没有包含所有代码,但应该足够了)。

最佳答案

您尝试解决的问题是由于尝试使用列表作为要从列表中删除的索引而引起的

[n for n in Wolf._registry if n == target]

您想要摆脱此列表理解的只是目标,因此只需使用它即可。

Wolf._registry.remove(target)

关于python - 无法选择列表中的对象并将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59938262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com