我需要遍历嵌套列表并检查#在列表中的位置。我正在使用NWES(北,西,东,南)坐标。因此W应该返回False(因为#在那个位置),E应该是True,而S也应该是True。我想遍历每个字母并为每个字母获取布尔表达式。问题是我对W的判断为False,而忽略了E和S。 不知道是否存在缩进问题或其他问题。
def something(can_mine, moves) -> bool:
""""""
for i in range(len(can_mine)):
for j in range(len(can_mine[0])):
for k in moves:
if can_mine[j][-1] == '#' and k == 'E':
return False
#
elif can_mine[j][0] == '#' and k == 'W':
return False
# N works
elif can_mine[0][j] == '#' and k == 'N':
return False
# S works
elif can_mine[-1][j] == '#' and k == 'S':
return False
else:
return True
if __name__ == '__main__':
print(something([['#', '.', '.', 'x'], ['.', '.', 'x', '.'], ['.', '.', 'X', 's'], ['.', '.', 'x', 'x']], 'WES' ))
What i need is something like that:
False
True
True
What I get is:
False (which is ok)
False (should be True)
False ( should be True)
答案 0 :(得分:1)
您的问题不太清楚,但是据我所知并阅读了您的代码,我只说了几句:
for
循环,而需要2
,一个循环用于moves
,一个循环的大小为can_mine
moves
循环应该是第一个,因为它将与您的输出匹配->如果您进行m
个移动,那么您的输出将有m
个布尔值True
的{{1}}向量,这与以下事实直接相关:默认情况下,除非您输入了返回m
的条件之一我编辑了代码以匹配您指定的输出,请参阅阅读并向自己解释为什么您的代码无法按您希望的那样工作。
代码:
True
输出:
[False,True,True]