我正在尝试创建一个程序,该程序将在桌面RPG中跟踪您的聚会及其健康状况。到目前为止,我能想到的最好的方法是有两个单独的列表,一个与党员成员列表,一个与他们的健康状况列表,以便在显示聚会时,它将运行类似于以下内容的代码:
for Member in Party:
print(str(Member) + ":", str(Health), "HP")
是否可以从不同列表中为每个成员拉出相应的HP?
答案 0 :(得分:1)
如果重要的是要拥有两个不同的列表,并且这些列表的顺序都相同(聚会成员列表的第一个元素与hp列表的第一个元素相对应),则可以压缩两个列表并对其进行迭代同时。
但是,如果要修改列表的元素,则可以枚举它们,从而允许您在遍历两个列表时跟踪索引,然后在循环中按索引修改列表。 / p>
vfunction = np.vectorize(function)
matrix = vfunction(a, b, c) # Doesn't work
但是,我建议您创建一个dict,它的数据结构与使用两个列表不同,但是使用起来要优雅得多。
for i, (member, hp) in enumerate(zip(members, hitpoints)):
print(member, hp)
if member == 'Bob':
hitpoints[i] -= 10
对于更高级的用法(我仅表示非常轻微),您可以使用json模块将这些数据读写到文本文件中,以在多个会话中持久保存。
答案 1 :(得分:0)
在评论部分,我将两种建议结合使用。在这里使用OOP似乎是最佳选择,因此,下面是一个简短的示例
class Party(dict):
def add_member(self,member):
self[member.name] = member.hp
def party_hp(self):
total_hp = 0
for name,hp in self.items():
total_hp += hp
return total_hp
class Member():
def __init__(self, name, hp):
self.name = name
self.hp = hp
player1 = Member("player1",10)
player2 = Member("player2",10)
player3 = Member("player3",10)
player4 = Member("player4",10)
test_party = Party()
test_party.add_member(player1)
test_party.add_member(player2)
test_party.add_member(player3)
test_party.add_member(player4)
print(test_party.party_hp())
>>>> 40
请注意,这只是为了说明OOP如何成为真正可行的解决方案。基本上,在我的示例中,您有一个Party
类,该类包含一个成员字典。呼叫party_hp
即可返回聚会的总血量。
确切的实现可以完全不同。例如,您可以接受用户列表,以缩短向Party
添加成员时所需的代码行数。同样,这是您可以使用的骨架。