Я пытаюсь создать вложенный цикл for, в котором внутренний цикл будет иметь другой диапазон при первом запуске цикла, а затем использовать другой диапазон для каждого последующего цикла.
Программа решает судоку,И он работает, занимая позицию на доске 9x9 (board[k][l]
), проверяя условие, а затем перемещаясь в положение доски прямо влево (board[k][l-1]
).
Если l
равно 0чем нам нужно перейти к предыдущему ряду (k-1
) и самой дальней позиции вправо, где l
равно 8.
Проблема, с которой я столкнулся, заключается в первой итерации внутреннего цикла циклане всегда начинается с l
, равного 8.
Например, пользователь может выбрать квадрат board[3][3]
.Затем функция должна проверить board[3][2]
, затем board[3][1]
, затем board[3][0]
, затем board[2][8]
и т. Д.
Приведенный ниже код работает, только если l=8
for i in range(k, -1, -1):
for j in range(l, -1, -1):
Для ясности я могу добиться желаемого результата, используя несколько циклов for, но я пытаюсь сделать этот код более лаконичным:
k = user selection
l = user selection
for j in range(l, 0, -1):
test(k,j)
for i in range(k-1, -1, -1):
for j in range(9, 0 , -1):
test(i,j)
Мне это не нравится по двум причинам, во-первых, мы сталкиваемся спроблема, если либо k, либо l начинается с 0, во-вторых, здесь нет необходимости использовать два цикла for.