如果..在python中的else

时间:2013-01-24 01:01:56

标签: python syntax

我用Python编写了一个程序来生成素数 这是程序

def genPrimes(n):
    primes = [2]  # primes generated so far
    last = 3  # last number tried
    while last <= n:        
        for p in primes:
            if last % p == 0 and math.sqrt(p) <= last:
                break
        else:
            primes.append(last)
        last += 2
    return primes

http://codepad.org/d33tsQyT

该程序正在产生正确的答案。如果你看到else:语句的缩进,那么它被错误地放置了。如果我尝试在块解释器显示内存错误时放置else语句。谁能说出为什么会发生这种情况。

提前致谢 玛里埃什

2 个答案:

答案 0 :(得分:4)

else实际上附加到for循环,并且如果程序没有突破循环则执行。在你的情况下,如果没有素数分成数字,它就会执行,因此数字是素数并被附加到列表中。

另见the documentation

答案 1 :(得分:2)

它没有放错,python假设你正在使用for-else循环。

来自docs

  

当与循环一起使用时,else子句与   try语句的else子句比if语句的else子句:a   try语句的else子句在没有异常发生时运行,并且a   当没有中断发生时,loop的else子句运行。