Ваш вопрос не так ясен, но, как я смог понять и прочитать ваш код, у меня есть несколько замечаний:
- вам не нужно 3 вложенных цикла
for
, но 2
,один для moves
и один для размера can_mine
- , вы не можете вернуться из функции с 1 логическим значением и ожидать, что она вернет 3, если вы нигде не сохраните их и вернете их, а не1 логическое значение
- ваш цикл
moves
должен быть первым, потому что он будет соответствовать вашему выводу -> если у вас будет m
ходов, то ваш вывод будет иметь m
логические значения - заметьте, я инициализировал выходной вектор
True
вектором размера m
, это с прямым контактом с тем фактом, что по умолчанию, если вы не вошли в одно из условий, вы возвращаете True
Я отредактировал код, чтобы он соответствовал указанному вами выводу. Пожалуйста, прочтите его и объясните себе, почему ваш код не работает так, как вы хотели.
Код:
def something(can_mine, moves):
""""""
m = len(can_mine[0])
res = [True for i in range(len(moves))]
for idx, k in enumerate(moves):
for j in range(m):
if can_mine[j][-1] == '#' and k == 'E':
res[idx] = False
#
elif can_mine[j][0] == '#' and k == 'W':
res[idx] = False
# N works
elif can_mine[0][j] == '#' and k == 'N':
res[idx] = False
# S works
elif can_mine[-1][j] == '#' and k == 'S':
res[idx] = False
return res
if __name__ == '__main__':
mine = [['#', '.', '.', 'f'], ['.', '.', 'N', '.'], ['.', '.', 'X', 's'], ['.', '.', 'j', 'X']]
moves = 'WES'
print(something(mine, 'WES'))
Выход:
[False, True, True]