1

Minecraft の Raspberry Pi バージョン用の mod を作成していますが、プログラムでコマンドの 1 つを入力するたびに非常にイライラするエラーが発生します。これが私のコードです:

import minecraft.minecraft as minecraft
import minecraft.block as block
import time

mc = minecraft.Minecraft.create();

print('newBlock - Change ID of block to spawn')
print('blockType - Change subID of block to spawn')
print('pos1')
print('pos2')
print('fill - fill specified area')
print('clear - clear specified area')
print
while True:
comm=str(input('Command: '))
if comm=="newBlock":
    blockId = int(input('Enter Block ID: '))
    mc.postToChat('Block set to ID: ' + str(blockId))
if comm=="blockType":
    blockData = int(input('Enter Block Type: '))
if comm=="pos1":
    position1 = mc.player.getPos()
    mc.postToChat('Set Position 1 as: x' + str(position1.x) + ' y' + str(position1.y) + ' z' + str(position1.z))
if comm=="pos2":
    position2 = mc.player.getPos()
    mc.postToChat('Set Position 2 as: x' + str(position2.x) + ' y' + str(position2.y) + ' z' + str(position2.z))
if comm=="fill":
    mc.setBlocks(position1.x, position1.y, position1.z, position2.x, position2.y, position2.z, blockId, blockType)
    mc.postToChat('Filled specified area with: ' + str(blockId))
if comm=="clear":
    mc.setBlocks(position1.x, position1.y, position1.z, position2.x, position2.y, position2.z, 0)
    mc.postToChat('Cleared specified area')

ユーザーが変数「comm」を介して入力を行うたびに、プログラムは次のエラー メッセージを吐き出します。

Traceback (most recent call last):
    File "WorldEditPi.py", line 15, in <module>
        comm=str(input('Command: '))
    File "<string>", line 1, in <module>
NameError: name 'newBlock(or what ever the user entered into 'comm')' is not defined

本当に紛らわしいのは、変数 'newBlock' は変数ではなく、変数 'c​​omm' の内容であるということさえ話していないことです。これは、「newBlock」だけでなく、すべてのコマンドで発生します。

4

2 に答える 2

0

input() を使用して newBlock を入力すると、パーサーは newBlock を文字列ではなく変数と見なします。したがって、 raw_inputを使用する必要があります

input() の参照を参照してください

def input(prompt):
    return (eval(raw_input(prompt)))
于 2013-04-28T02:52:57.483 に答える