Итак, в списке мне нужно проверить, находится ли «z» в той же строке, что и выбранный регистр, и вернуть True, но если что-то находится в пути, например «x», он возвращает False. Я сделал код, но проблема в том, что если есть две буквы «z», а одна слева заблокирована «x», а другая нет, он возвращает False, но должен быть True. В остальных случаях работает нормально. Надеюсь, вы меня понимаете, я довольно плохо объясняю эти вещи.
def row(lst,i,j):
c = 0
if 'z' not in lst[i]:
c += 1
else:
for n in range(0,len(lst[i])):
if lst[i][n] == 'z' and n > j:
for m in range(j,n):
if lst[i][m] == 'x':
c += 1
else:
c = 0
break
if lst[i][n] == 'z' and j > n:
for m in range(n,j):
if lst[i][m] == 'x':
c += 1
else:
c = 0
break
if c > 0:
return False
elif c == 0:
return True
Я действительно не знаю, что именно здесь «ломается», но это работает. Список, который я использую, таков:
lst = [['_','_','_','_','_'],['z','x','_','_','z'],['_','_','x','_','_']]
и случай, который я проверяю, это lst[1][2].
['_','x','_','_','z']
возвращает True, в строке есть 'z'.
['_','x','_','x','z']
возвращает False, z заблокирован
['z','x','_','x','z']
возвращает ложь
['z','x','_','_','z']
ПРОБЛЕМА: должен вернуть True
break
. И спросите, кто написал этот код, если вы этого не сделали. - person Andras Deak   schedule 14.11.2016