Вот код, часть решения проблемы 11 в Euler Project :
sum_d = 0
j = 0
while j < 20:
i = 0
while i < 20:
try:
sum_d = grid[j][i] * grid[j+1][i+1] * grid[j+2][i+2] * grid[j+3][i+3]
if sum_d > result:
result = sum_d
except IndexError:
pass
i += 1
j += 1
Мой вопрос: считается ли отлов этих исключений запахом кода? Я вижу, что будет сложнее отлаживать такой код (скажем, я случайно зациклил более 19 элементов вместо 20, это будет сложнее отследить), но это намного элегантнее, чем, скажем, кодирование i < (GRID_WIDTH - NUM_ITEMS_IN_PRODUCT)
в цикле проверки.
P.S. Я уже решил проблему, я говорю о стиле кода