Следующий код должен печатать несколько строк
1
2
3
, смешанных со строками
0
Однако на самом деле он печатает несколько строк
1
1
1
1
3
, смешанный со строками
0
Код:
boxes = []
for y in range(len(hmap)):
for x in range(len(hmap[y])):
w = 4
h = 4
minh = hmap[y][x]
maxh = hmap[y][x]
htemp = h
while True:
if y + htemp > len(hmap): break
passes = False
wtemp = w
while True:
if x + wtemp > len(hmap[y]): break
for c in range(x, x+wtemp):
for r in range(y, y+htemp):
minh = min(minh,hmap[c][r])
maxh = max(maxh,hmap[c][r])
if maxh - minh > v:
print('1')
break
else:
print('2')
break
else:
print('3')
break
print('0')
passes = True
wtemp += 1
if passes:
boxes.append([x,y,wtemp-1,htemp])
htemp += 1
if not passes: break
hmap
- это двумерный массив значений с плавающей точкой, который передается функции, в которой находится этот код.
Этот сегмент кода должен генерировать серию прямоугольников для других (не относящихся к делу) частей кода для использования в дальнейшем.Прямоугольники, которые «проходят» (мин. / Макс. Значения не имеют разницы, превышающей v
), приводят к печати
0
.Прямоугольники, которые не «проходят» , должны вызывать печать
1
2
3
при разрыве вложенных циклов for
и while
.Почему это не работает?