#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
Надеюсь, теперь это имеет смысл