Python缩进,IF和ELSE的对齐

Adr*_*ltu 2 python syntax indentation python-2.7

我是python的新手,我仍然很想知道sytnax是如何工作的,你需要如何将你的If和else联系起来以使其正常工作.我怎么知道哪个还有哪个呢?特别是在使用嵌套代码块时.

在下面的代码中,对于else,然后注释Prime!从我的理解,否则与声明一致,(n % div == 0):但是为什么它与FOR声明相关?

我想到的最后一个其他声明,if n == 2:但是其他声明并没有与之对齐,而是在它之后.对于相同的陈述,if n == 2:为什么在它n += 1之前pime_count +=1而不是之后进行对齐.

我理解Else的位置和if是非常重要的,因为如果我决定移动其中任何一个代码停止工作.我似乎无法理解的是,如果allignment看起来并不一致,那么python如何知道哪个与之相关.

#!/usr/bin/env python
#
# Problem Set 1a
#
# A program that computes and prints the 1000th prime number.
# Finds primes using trial division (least efficient method)
#------------------------------------------------------------

prime_count = 0
n = 2 

while (prime_count <= 1000):
  #if even, check for 2, the only even prime
  if (n % 2 == 0):
    if n == 2:
      prime_count += 1
    n += 1
  else:
    # number is odd, possible prime
    for div in range(3, n, 2):
      if (n % div == 0):
        # not a prime
        n += 1
        break
    else:
      # prime!
      prime_count += 1
      if prime_count == 1000:
        print "The 1000 prime is", n
      else:
        n += 1
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 10

规则很简单:else子句必须与它引用的语句具有相同的缩进(最常见的是if语句).

现在,在这里:

for div in range(3, n, 2):
  if (n % div == 0):
    # not a prime
    n += 1
    break
else:
  ...
Run Code Online (Sandbox Code Playgroud)

你没有使用if- else,你正在使用for-else!

这个结构意味着"执行else块,除非循环通过break" 终止".

请参阅Python中的其他内容以供讨论.