Что делает эти два кода Python с разными отступами дает разные результаты

Редактировать. Я извиняюсь за свой вопрос. Я спал и работал в IDE с другим уровнем отступов по умолчанию, с которым я не знаком. Мне даже не пришло в голову, что отступы отключены, даже после того, как я вставил и переделал свой код в Jupyter. В следующий раз я уделю больше внимания настройке табуляции при игре с новым инструментом python.

Исходя из того, во что я всегда верил до этого случая, я всегда думал, что код Python работает одинаково, независимо от того, делается ли отступ с пробелом или табуляцией, пока их уровни относительно родительского, пока я не наткнулся на этот сценарий, где эти два кода дают разные результаты. Первая была сделана из моей обычной повседневной среды разработки, Jupyter Notebook, а вторая - из записной книжки Google DataLab, которая впервые использовалась мной. Удивительно, но в отличие от Jupyter, он не дал мне никакого предупреждения об отступах (покраснев). Позже я нашел причину этой ошибки после того, как вставил ее в Jupyter, которая несколько строк стала красной.

Код № 1

import numpy as np

A = [1,53,24,65,76,34]

for j in range(len(A)-1):
    min_index = j
    for i in range(j+1, len(A)):
        if (A[i] < A[min_index]):
            min_index = i

    if(min_index != j):
        A[min_index],  A[j] = A[j], A[min_index]


print A

Код № 2

import numpy as np

A = [1,53,24,65,76,34]

for j in range(len(A)-1):
  min_index = j
  for i in range(j+1, len(A)):
    if (A[i] < A[min_index]):
      min_index = i

    if(min_index != j):
      A[min_index],  A[j] = A[j], A[min_index]

print A

1 ответ

Решение

В первом примере второй if находится за пределами внутреннего for цикл, но во втором примере это внутри цикла. Поскольку он повторяется только один раз для каждого внешнего цикла во втором блоке, результат, очевидно, будет другим.

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