【发布时间】:2013-03-07 15:51:32
【问题描述】:
我是 python 新手,我仍在努力了解 sytnax 的工作原理,以及如何调整 If 和 else 以使其正常工作。我怎么真的知道哪个 if 与哪个 else 相配?尤其是在使用嵌套代码块时。
在下面的代码中,else 后跟注释 Prime!据我了解, else 与 if (n % div == 0): 语句一致,但为什么它与 FOR 语句对齐?
我认为最后一个 else 语句与 if n == 2: 一起使用,但 else 与它没有对齐,而是在它之后。对于相同的声明 if n == 2: 为什么是 n += 1 在 pime_count +=1 之前而不是在它之后。
我知道 Else 和 if 的位置非常重要,因为如果我决定移动其中任何一个,代码就会停止工作。我似乎无法理解的是,如果对齐方式似乎不一致,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
【问题讨论】:
-
缩进应该是一致的,我会质疑该代码sn-p的有效性。
-
你也可以在 python 中
elsefor循环,所以这里可能会让你感到困惑。 -
我同意 @AnthonyGrist 的观点,看起来最后 7 行应该加标签。
-
使用 4 个空格的缩进会使这变得更具可读性。
-
感谢@MartijnPieters - python 的“规则”是 4 个空格缩进。见python.org/dev/peps/pep-0008。如果您想被认真对待,请这样做
标签: python syntax python-2.7 indentation