2

6.00x edX には演習があり、その回答の提案は次のとおりです。

def genPrimes():
    primes = []   # primes generated so far
    last = 1      # last number tried
    while True:
        last += 1
        for p in primes:
            if last % p == 0:
                break
        else:
            primes.append(last)
            yield last

ID を見ると、この ELSE が IF に関連していないことがはっきりとわかります。バグだと思っていたのですが、実行するとコードは正常で、何が起こっているのか理解できません。その ELSE は何をするのでしょうか?

4

2 に答える 2

4

forリストを通過するループが完了したときに実行されます。しかし、あなたが持っている例の場合。breakが呼び出された場合、はelse実行されません。

于 2012-11-08T20:57:24.350 に答える
3

elseの途中でなく正常に実行さfor loopれた場合、実行の一部。for loopbreakingiteration

したがって、あなたの例では: -

if last % p == 0:
      break

上記if conditionの for ループがある反復で true になると、for ループから抜け出し、その場合、else は実行されません。

于 2012-11-08T20:57:38.350 に答える