Не понимаю, вложенный For Loop в Python

Для пользователей Intellij моя проблема заключалась в том, что каталог, в котором были мои файлы fxml (src / main / resources), не был помечен как каталог «Ресурсы».

Откройте настройки модуля / проекта, перейдите на вкладку источников и убедитесь, что Intellij знает, что каталог содержит файлы ресурсов проекта.

-4
задан wussyx 6 March 2019 в 15:26
поделиться

3 ответа

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.
0
ответ дан Flob 6 March 2019 в 15:26
поделиться

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

Когда вы начинаете путешествие по изучению Python, одной из действительно полезных практик является чтение официального документа. https://docs.python.org/3/tutorial/controlflow.html

0
ответ дан JR ibkr 6 March 2019 в 15:26
поделиться

Чтобы помочь вашему пониманию, попробуйте следующее:

di = [96, 15, 33, 87]
for i in range(len(di)):
    print("first loop, i =", i)
    total = di[i]
    for j in range(i+1,len(di)):
        print("second loop, j =", j)
        print("second loop, i =", i)

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

0
ответ дан mauve 6 March 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: