Вложенный цикл For — проблема с пониманием концепции

#python #nested-for-loop

#python #вложенный цикл for

Вопрос:

Добро пожаловать

Я в целом понимаю концепцию циклов и то, как они работают. Тем не менее, я столкнулся с тем, что я просто не могу понять

 for i in range(10):
    for j in range(i):
        print(i, end="")
print()
 

В этом цикле будет отображен список чисел

1
22
333
4444
55555
666666
7777777
88888888
999999999

Это именно то, чего я хотел… Но я не могу понять, почему он печатает одни и те же числа в каждой строке. Если печатается переменная «j», программа действует так, как я ожидал, что она будет работать.

0
01
012
0123
01234
012345
0123456
01234567
012345678

У кого-нибудь есть идеи, почему это так?

Редактировать:

Спасибо за ответы. Я, наконец, понял это (и чувствую себя так глупо, как раньше)

Комментарии:

1. К вашему СВЕДЕНИЮ: range(10) дает вам числа 0 9 . range(0) ничего не дает.

Ответ №1:

Тот же символ повторяется, потому что печатается второй for цикл i , значение из внешнего цикла. Если бы он печатал j , он выглядел бы так, как вы ожидаете. Значение i изменяется только после завершения j цикла. Внешний цикл не будет повторяться до тех пор, пока не будут выполнены какие-либо внутренние циклы.

Если это не было очевидно для вас даже после печати j , то, похоже, вашим знаниям о for циклах не хватает чего-то фундаментального. Вам было бы очень полезно научиться использовать отладчик, что является важным знанием дня 1 для любого инженера-программиста.

Ответ №2:

 range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# your loop
for i in range(10):
    for j in range(i):
        print(i, end="")
 

Позвольте мне немного разбить его

 range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# replacing 'i' with 'j'
for i in range(10):
    for j in range(i):
        print(j, end="")
i = 0 #range(0)
nil 
i = 1
#in nested loop range(1) = [0]
0
i = 2
#range(2) = [0,1]
0 1
#range(3) = [0, 1, 2]
0 1 2
#range(4) = [0, 1, 2, 3]
0 1 2 3
#range(5) = [0, 1, 2, 3, 4]
0 1 2 3 4
 

Надеюсь, теперь это имеет смысл