为什么出现“ NameError:名称'位置'未定义”错误

时间:2019-08-15 09:07:20

标签: python python-3.x

为什么在我运行此代码时,错误是

  

“名称位置未定义?”

我想我已经在定义position之前

该代码用于使用 r,l,i,d 更改 position(x,y)

def get_position_in_direction(position, direction):

    position=(0,1)
    x,y=position
    direction=input("Please enter an action (enter '?' for help): ")

    if direction=='r':
        xi,yi=(1,0)
    elif direcrion=='l':
        xi,yi=(-1,0)
    elif direction=='u':
        xi,yi=(0,1)
    elif direction=='d':
        xi,yi=(0,-1)
    else:
       pass
    position=position+xi,yi
    return position
print(get_position_in_direction(position, direction))

1 个答案:

答案 0 :(得分:1)

我在您的代码中发现了几个问题:

  • 调用它时,在以下行中:print(get_position_in_direction(position, direction))positiondirection未定义
  • 参数directionposition作为函数的输入是无用的,因为您随后会对其进行更新,所以让我们删除更新它们的行
  • if-else语句中存在拼写错误,您写了direcrion而不是direction
  • 此行不执行您想要的操作。请参阅下面的正确执行方法:position=position+xi,yi
  • 如果输入了错误的方向,则xiyi将是不确定的。在这种情况下,让我们删除一个受控错误

正确的代码是:

def get_position_in_direction(position, direction):

    x,y=position    
    if direction=='r':
        xi,yi=(1,0)
    elif direction=='l':
        xi,yi=(-1,0)
    elif direction=='u':
        xi,yi=(0,1)
    elif direction=='d':
        xi,yi=(0,-1)
    else:
        raise ValueError("The value specified for the direction"
                         "parameter is not recognised as a valid parameter")
    position=(position[0]+xi, position[1]+yi)
    return position

position = (0,0)
direction = 'l'
print(get_position_in_direction(position, direction))