почему функция диапазона Python для цикла работает дважды - PullRequest
0 голосов
/ 29 мая 2018

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

Код:

def sort(a_list):
    for i in range(1,len(a_list)):
        print("i=",i)
        for j in range(i-1,0,-1):
            print("j=",j)

Тест: L = [9,6,1,3]

сорт (L)

Результат:

i= 1
i= 2   # here, the outer lopp ran twice then inter loop began.
j= 1
i= 3
j= 2
j= 1

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Потому что здесь во внутреннем цикле для первой итерации это будет

For j in range(1-1,0,-1):

, что соответствует

For j in range(0,0,-1):

Этот диапазон является пустым диапазоном, поэтому при i = 1 внутренний цикл выигралне выполняется, поскольку условие оценивается как ложное

0 голосов
/ 29 мая 2018

Это потому, что когда i = 1 внутренний цикл становится range(0,0,-1), что является пустым.Таким образом, вы ничего не печатаете и не переходите на i = 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...