len(di)
равно 4. Таким образом, цикл
for i in range(len(di)):
будет повторяться 4 раза.Из-за способа работы range
(от нижней границы, которая по умолчанию равна 0, если не указано, до 1 ниже верхней границы), i
будет 0
в первом повторении, 1
во втором повторении, и так далее.Чтобы вычислить, сколько объектов range(x, y)
генерирует, в этом случае, как часто for i in range(x, y)
будет повторяться, вы можете просто сделать number of repetitions = y - x
.Таким образом, в этом случае: len(di) - 0 (default lower bound) = 4
.
Цикл
for j in range(i+1, len(di)):
print(i)
будет повторять команду print(i)
len(di) - (i + 1)
раз.Имейте в виду, i
определяется внешней петлей.Таким образом, во время первого цикла
for i in range(len(di)):
i
равно 0
, поэтому команда print(i)
будет выполнена 4 - (0+1) = 3
раз - она напечатает i(=0)
3 раза.Во втором цикле i
равно 1, поэтому оно будет напечатано 2 раза и так далее.Итак, вот что происходит, отформатировано как код для лучшей читаемости:
First outer loop:
i = 0
total = di[i] = di[0] = 96
--> first inner loop of first outer loop:
j = i + 1 = 1
i is printed -> prints 0
second inner loop of first outer loop:
j = j+1 = 2
i is printed -> prints 0 again
third inner loop of first outer loop:
j = j+1 = 3 --> since len(di) = 4, the upper bound of range(i+1, len(di)) is reached, so this is the last Repetition
i is printed -> prints 0 again
Second outer loop:
i = 1
total = di[1] = 15
--> first inner loop of second outer loop:
j = i+1 = 2
i is printed -> prints 1
second inner loop of second outer loop:
j = i+1 = 3 -> upper bound of range reached, last repetition
i is printed -> prints 1 again
Third outer loop:
i = 2
total = di[2] = 33
--> first inner loop of third outer loop:
j = i+1 = 3 -> upper bound of range is reached, only Repetition
i is printed -> prints 2
Fourth (and final) outer loop:
i = 3 -> upper bound of range(len(di)) reached, last Repetition
total = di[3] = 87
since j = i+1 = 4, the inner loop does not get executed at all (both bounds of range are equal), so 3 doesn't get printed
end of code.