python中 for else 容易出錯的地方

之前編判斷質數的一個程序,每次看時,都看懂了,然後自己編時總會出錯,

比如老是編成

for num in range(2, 101):
    for i in range(2, num):
        if num % i == 0:
            j = num/i
            print(str(num) + '=' + str(i) + '*' + str(j))
            break
        else:
            print(str(num) + 'is a prime number.')

這樣運行出來總是出來很多錯誤,後來仔細看了一下,正確是這樣的

for num in range(2, 101):
    for i in range(2, int(num/2)+2):
        if num % i == 0:
            j = num/i
            print(str(num) + '=' + str(i) + '*' + str(j))
            break
    else:
        print(str(num) + 'is a prime number.')

然後就回顧了下for-else的用法:

是這樣的,如果for 裏面的可迭代的對象迭代完爲空時,纔會執行else中語句,如果for 中有break,這種情況沒有把for中的可迭代的對象迭代完爲空,這種情況下是不會調用else中的語句的。

一句話總結就是:當for中的迭代完爲空時,纔會調用 else後面的語句。

發佈了35 篇原創文章 · 獲贊 25 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章