首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将数组内容传入函数时无法正常工作

将数组内容传入函数时无法正常工作
EN

Stack Overflow用户
提问于 2019-04-25 04:25:21
回答 1查看 41关注 0票数 0

当试图将一个数组传递给一个函数时,它根本不做任何事情。我的代码如下

main.py

代码语言:javascript
复制
import items
import npcs.py

def pickup(item):
    global player_weight_max,player_weight,player_inv
    #Calculates if item's weight will make player_weight go over player_weight_max
    if player_weight + item[5] <= player_weight_max:
        player_inv.append(item)
        player_weight = player_weight + item[5]
    else:
        print("You're not able to carry this item.")

def npc(npc):
    #Prints NPC speech
    if npc[2] != None:
        print("".join(npc[1]) + ": " + "".join(npc[2]))
    else:
        pass
    for function in npc[3]:
        if function[0] == 'pickup':
            pickup(function[1])
        if function[0] == 'battle':
            battle(function[1])

npcs.py

代码语言:javascript
复制
import items

#art,name,speech,functions
test_guy = [["art"],["name"],["speech"],[
        [['pickup'],[items.armour[0]],
        [['pickup'],[items.armour[1]],
    ]
]

items.py

代码语言:javascript
复制
armour = [
    [str(""),str("Tin Helmet"),int(1),int(20),str("head"),int(2),int(0),int(2)],
    [str(""),str("Tin Chestplate"),int(1),int(20),str("torso"),int(0),int(1),int(2)],
    [str(""),str("Tin Pants"),int(1),int(20),str("legs"),int(3),int(0),int(2)],
    [str(""),str("Tin Boots"),int(1),int(20),str("feet"),int(2),int(0),int(2)],
]

为什么pickup()不追加从items.py获取的信息

我已经验证了pickup()在执行pickup(items.armour)时是否有效,它应该只是将该位置的数组传递到pickup()中,为什么不能对test_guy3和test_guy3中包含的信息执行同样的操作

更新代码如下:

代码语言:javascript
复制
def npc(npc):
    #Prints NPC speech
    if npc[2] != None:
        print("".join(npc[1]) + ": " + "".join(npc[2]))
    else:
        pass
    for function in npc[3]:
        print(function[1][0])
        if function[0][0] == 'pickup':
            pickup(function[1][0])
        if function[0][0] == 'battle':
            battle(function[1][0])

运行时:

代码语言:javascript
复制
npc(npcs.test_guy)
print(player_inv)

输出现在是正确的:

代码语言:javascript
复制
name: speech
['', 'Tin Helmet', 1, 20, 'head', 2, 0, 2]
['', 'Tin Chestplate', 1, 20, 'torso', 0, 1, 2]
[['', 'Tin Helmet', 1, 20, 'head', 2, 0, 2], ['', 'Tin Chestplate', 1, 20, 'torso', 0, 1, 2]]

谢谢!

(是的,我知道这不是最有效的方法,我现在还在学习,只是想让事情运转起来)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-25 04:48:18

同时避免这段代码不必要的复杂性。

您的项在另一个数组中,因此item[0]永远不会等于pickup/battle,同样,item[1]也永远不会是项,它将是一个包含项的数组。

因此,首先修复test_guy中缺少的函数部分的括号,然后首先引用函数内部数组

item[0][0]item[0][1]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55838034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档