功能未按预期/预期输出

时间:2013-09-04 23:12:47

标签: python function ant dictionary

我正在编写Langton Ant模拟器的背景,但是我遇到的问题不需要知道问题本身,所以不要担心。

有用的信息包括:变量'grid'始终对应于某些列表列表,例如:

grid = [['black', 'black'], ['white', 'black'],['black', 'white']]

另外,我已经定义了以下2个词典:

Dict_White= {'North':'East','East':'South','South':'West','West':'North'} 


Dict_Black= {'North':'West','West':'South','South':'East','East':'North'}

这是困扰我的功能:

def orientation_and_colour_change(ant_row,ant_col,orientation):
   if grid[ant_row][ant_col]=='Black':
      grid[ant_row][ant_col]='White'
      orientation=Dict_Black[orientation]
   elif grid[ant_row][ant_col]=='White':
      grid[ant_row][ant_col]='Black' 
      orientation=Dict_White[orientation]
   return orientation

很清楚函数的用途是什么,即在网格中的“位置”和“方向”,并输出它的新方向,这基本上只是字典中键的值。此外,它应该调整其中一个网格条目本身,即“黑色”到“白色”或“白色”到“黑色”。但是,我遇到的问题如下:

方向返回始终与输入相同,并且显然没有通过函数传递以返回字典的值,而不是输入键。

其次,该功能未按预期编辑预定义网格。

知道为什么会出现这些问题吗?

编辑:这是一个简单的大写字母与非大写字母不平等问题。将以上未经编辑的遗漏作为我的疏忽的证明。干杯Peter DeGlopper!

2 个答案:

答案 0 :(得分:0)

你应该尝试“如果grid [ant_row] [ant_col] =='black':”而不是“如果grid [ant_row] [ant_col] =='Black':”。同样的事情“elif grid [ant_row] [ant_col] =='White':”。你也在做任务时也是这样。

答案 1 :(得分:0)

鉴于您的所有信息都是正确的,您的问题就是案例(“黑色”与“黑色”)。

顺便说一句,这样做效果更好:

directions = dict(
    white={'North':'East','East':'South','South':'West','West':'North'},
    black={'North':'West','West':'South','South':'East','East':'North'},
)

def orientation_and_colour_change(ant_row,ant_col,orientation):
    "Return new orientation, and change grid state as a side effect."
    color = grid[ant_row][ant_col]
    grid[ant_row][ant_col] = 'white' if color == 'black' else 'black'
    return directions[color][orientation]