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" 终止".