Python:怪物列表需要怪物帮助,我如何正确填写我的列表?

2024-06-16 11:14:24 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我昨天开始用Python,在我的第一个项目中,我想让怪物们互相战斗。你知道吗

我还处在开始阶段,我想用我创造的怪物来填充一个列表。我的怪物函数询问它应该创建多少个怪物,并返回一个包含所有怪物的列表。你知道吗

不知何故,我的代码是错误的,只返回一个怪物:(

def create_monster(number):
    monster = [0] * number

    for i in monster:
        """monster = [ID,GENDER,NAME,HP,ATK,DEF,SATK,SDEF,AGIL,]"""

        monster[i] = [monster_identifier(), monster_gender(), None]
        monster[i][2] = monster_name(monster[i][1])



    return monster

例如,此代码的输出用于number=3

[[3, 'Male', 'Berid'], 0, 0]

但应该是这样的

[[1,'Male','Berid'],[2,'Female','David'],[3,'Male','Holger']]

Tags: 项目函数代码innumber列表fordef
2条回答

你的循环:

for i in monster:

迭代monster列表中的。您不会得到索引,因为Python循环是foreach constructs。你知道吗

您的列表只包含数字0

monster = [0] * number

所以所有i都设置为0。这就是为什么您只会更改索引0处的元素,无论您在哪里编写monster[i],您都可以为相同的结果编写monster[0]。你知道吗

与其用零来预先构建列表,只需在循环时使用^{}添加新元素,并使用^{}计算您创建了多少怪物:

def create_monsters(number):
    monsters = []   # empty list

    for i in range(number):  # loop number times
        gender = monster_gender()
        monster = [monster_identifier(), gender, monster_name(gender)]
        monsters.append(monster)  # add to the list at the end    

    return monsters

我将函数和列表重命名为复数形式monsters,以表明这不仅仅是一个怪物。你知道吗

简单地替换

monster = [0] * number

monster = range(number)

相关问题 更多 >