是什么让这两个Python代码具有不同的缩进产生不同的结果

时间:2017-01-25 03:37:58

标签: python jupyter-notebook google-cloud-datalab

编辑。:我为我的问题考虑了一下,我很困难,在IDE中使用不同的默认缩进级别,我不熟悉。即使在我在Jupyter中粘贴并重做我的代码之后,缩进也没有发生在我身上。下次使用新的python工具时,我会更加注意制表空间设置。

在本案例之前我一直认为,我总是认为Python代码的工作方式是相同的,无论缩进是用空格还是制表符,只要它们的级别是相对于父级的,直到我偶然发现这种情况下,这两个代码产生不同的输出。第一个是我常用的日常IDE,Jupyter笔记本,而第二个是用Google DataLab笔记本制作的,这实际上是我第一次使用它。令人惊讶的是,与Jupyter不同,它根本没有给我任何压痕警告(通过变红)。我把它粘贴在Jupyter上后发现了这个bug的原因,后面有几行变成了红色。

代码#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 个答案:

答案 0 :(得分:1)

在第一个示例中,第二个if位于内部for循环之外,但在第二个示例中,位于循环中。由于它只在第二个块中每个外循环迭代一次,结果显然会有所不同。