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
相关产品推荐
相关产品推荐

