Внутренний цикл запускается первым?

Привет, я пытаюсь понять порядок вложенных циклов. Первый цикл через внешний цикл возвращает 13 16 19 113 116 119 Похоже, что сначала он начинается с внешнего цикла, затем полностью проходит итерации внутреннего цикла и возвращается к внешнему циклу, пока не начнутся итерации, это правильно? Так ли это для большинства вложенных циклов? Заранее спасибо!

i1 = 1
    while i1 < 19:
        i2 = 3
        while i2 <= 9:
            print(f'{i1}{i2}', end=' ')
            i2 = i2 + 3
    i1 = i1 + 10

Когда я прошел вторую итерацию внешнего цикла, i2 перезаписывает обратно на 3 (вместо 6), что меня смущает и является неправильным.

Посмотрите это шаг за шагом на pythontutor.com

deceze 25.06.2024 21:20

Это хорошая возможность для вас начать знакомство с с помощью отладчика. Когда вы выполняете код в отладчике, какая операция первой приводит к неожиданному результату? Какие значения использовались в этой операции? Каков был результат? Какой результат ожидался? Почему?

David 25.06.2024 21:24

Итак, вы ожидаете, что оператор i2 = 3 присвоит значение 6 (а не 3) на второй итерации внешнего цикла? ПОЧЕМУ???

jasonharper 25.06.2024 21:24

Кажется, здесь есть некоторые проблемы с отступами. Пожалуйста, отредактируйте соответствующим образом.

JRiggles 25.06.2024 21:26

Другой возможный источник недопонимания - вы описываете 13 16 19 113 116 119 как «первый цикл через внешний цикл», но на самом деле это две итерации внешнего цикла. Результат будет намного яснее, если вы поставите какой-нибудь разделитель между i1 и i2, чтобы можно было определить, какие цифры из какой переменной.

jasonharper 25.06.2024 21:42

Чтобы просто решить такие вопросы, просто добавьте операторы печати, такие как print('inner') во внутренний цикл и print('outer') или распечатайте текущие значения переменных, где это полезно.

user19077881 25.06.2024 21:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, вы правы насчет порядка выполнения во вложенных циклах. Внешний цикл будет выполнять итерацию первым, и для каждой итерации внешнего цикла внутренний цикл завершит все свои итерации перед переходом к следующей итерации внешнего цикла.

Как это согласуется с удивлением, что i2 сбрасывается до 3?

Scott Hunter 25.06.2024 21:25

Спасибо, это очень помогает. Еще в школе, должно быть, неправильно поняли, что внутренний цикл завершается первым. Для меня имело смысл только то, что одно или другое должно было полностью пройти свой путь раньше другого.

Sonia Acosta 25.06.2024 21:38

Это произойдет только в том случае, если один цикл будет ПОСЛЕ другого. Но в вашем коде один цикл находится ВНУТРИ другого

Elerium115 25.06.2024 23:43

Другие вопросы по теме