功能未按预期输出

2024-04-26 21:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为兰顿蚂蚁模拟器编写背景代码,但是我遇到的问题不需要了解问题本身,所以不要担心。你知道吗

有用的信息包括:变量“grid”总是与一些列表相对应,例如:

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

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

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

很明显,函数的预期用途是什么,即获取网格中的“position”和“orientation”,并输出它的新方向,基本上就是字典中键的值。此外,它应该调整一个网格条目本身,即'黑'到'白'或'白'到'黑'。但是,我遇到的问题如下:

方向返回总是与输入相同,显然不是通过函数返回字典的值,而是通过输入键。你知道吗

其次,函数没有按预期编辑预定义的网格。你知道吗

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

编辑:这是一个简单的大写字母与非大写字母不平等的问题。以上内容将不予编辑,以证明我的疏忽。干杯彼得·德格洛珀!你知道吗


Tags: 函数网格coldictgridrowblackwhite
2条回答

如果你所有的信息都是正确的,你的问题就是“黑”对“黑”。你知道吗

另一方面,这样做效果更好:

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]

您应该尝试“if grid[ant\u row][ant\u col]=='黑色':”而不是“if grid[ant\u row][ant\u col]=='黑色':”。“elif grid[ant\u row][ant\u col]==='白色':”也是这样。你做作业的时候也是一样。你知道吗

相关问题 更多 >