You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minecraft MakeCode-Python中'e.findIdx is not a function'报错排查问询

解决Minecraft MakeCode-Python中e.findIdx is not a function报错问题

问题原因

Minecraft MakeCode的Python环境并非纯Python实现,它基于Blockly图形化积木转译机制,对部分语法的处理存在特殊限制。当你将Block枚举类型(如RED_WOOL)存入列表并通过索引访问后传入blocks.fill()时,转译器无法正确识别索引后的对象类型,从而触发该报错。直接传入单个RED_WOOL能正常运行,是因为转译器可直接识别这个明确的枚举类型。

解决方案

方案1:通过临时变量中转列表元素

修改函数内部代码,先将block_type[i]赋值给临时变量,再传入blocks.fill(),让转译器正确识别对象类型:

def My_fun(x, y, z, n, block_type):
    for i in range(n):
        current_block = block_type[i]
        blocks.fill(current_block,
            pos(x + i, y + i, z),
            pos(x + i, y + i, z),
            FillOperation.REPLACE)

block_type = [RED_WOOL,
    ORANGE_WOOL,
    YELLOW_WOOL,
    LIME_WOOL,
    CYAN_WOOL,
    BLUE_WOOL,
    PURPLE_WOOL]

My_fun(0, 0, 0, 7, block_type)

方案2:直接遍历列表元素

跳过索引访问,用enumerate同时获取元素和索引来计算位置:

def My_fun(x, y, z, block_type):
    for i, current_block in enumerate(block_type):
        blocks.fill(current_block,
            pos(x + i, y + i, z),
            pos(x + i, y + i, z),
            FillOperation.REPLACE)

block_type = [RED_WOOL,
    ORANGE_WOOL,
    YELLOW_WOOL,
    LIME_WOOL,
    CYAN_WOOL,
    BLUE_WOOL,
    PURPLE_WOOL]

My_fun(0, 0, 0, block_type)

查询Block枚举信息的方法

在Minecraft MakeCode编辑器中,点击左侧边栏的文档按钮(书本图标),在搜索框输入Block,即可查看所有预定义的Block枚举类型及其详细说明。

内容的提问来源于stack exchange,提问作者Nate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:27:25