如何使用字典添加和减去参数的值

时间:2013-08-24 08:26:34

标签: python python-3.x

好的,所以我对python和编码很新,所以我觉得我需要一些帮助。我将坦率地说,这是我目前正在努力奋斗的一项任务,因为我不熟悉编码和所有爵士乐。

所以问题是我必须按如下方式进行此功能:

get_position_in_direction(位置,方向),它取一行,列对表示一个正方形的位置,一个方向字符(n,s,e,w之一)并返回给定方向上相邻正方形的位置。 例如:

>>> get_position_in_direction((2,3), 'e')
(2, 4)

>>> get_position_in_direction((2,3), 's')
(3, 3)

如果你对此感到困惑,请将其描绘成正方形(3,3)上的坐标,我想移动方向n,s,e或w(我猜北,东,南或西)所以坐标将从(3,3)变为(2,3)或其他任何方向的输入。

我想要这样做的方式是使用如下的字典: DIRECTIONS = {'n':( -1,0),'s':( 1,0),'e':( 0,1),'w':(0,-1)}我想这会是返回我想要的值的最简单方法。

所以是的,就像我说我是编码新手,正在寻求帮助。我在python中了解很多,所以请不要觉得你只是在为我做任务,我会接受你的答案而不是学习任何东西,但我非常感谢你们的帮助。感谢。

2 个答案:

答案 0 :(得分:1)

您的DIRECTIONS字典是一个不错的选择。你的功能看起来像这样:

def get_position_in_direction(position, direction):
    DIRECTIONS = {'n': (-1, 0), 's': (1, 0), 'e': (0, 1), 'w': (0, -1)} 
    offset = DIRECTIONS[direction]
    return (position[0] + offset[0], position[1] + offset[1])

答案 1 :(得分:1)

先生。 E的解决方案非常简单,我喜欢它。但是,我要指出if语句更常规的解决方案仍然非常简洁易懂:

def get_position_in_direction(position, direction):
    output = position
    if direction == 'n':
        output = (output[0] - 1, output[1])
    elif direction == 's':
        output = (output[0] + 1, output[1])
    elif direction == 'e':
        output = (output[0], output[1] + 1)
    elif direction == 'w':
        output = (output[0], output[1] - 1)

    return output

我认为这种方法虽然可能不如E先生那么高效,但可能(取决于你对它的看法)在可理解性方面具有优势,如果其他人必须维护你的代码,这可能是一个巨大的交易

无论哪种方式,它都是一个近距离通话,只是一个跳过字典的替代方案。

编辑:为了清楚起见,我建议这种方法可能更容易理解的唯一原因是增加或减少位置坐标的单个元素是水平或垂直移动的良好认知模拟,而不是一个值表,总是做两个添加。这些实现之间可能存在显着的速度差异(如果这很重要)。