之前編判斷質數的一個程序,每次看時,都看懂了,然後自己編時總會出錯,
比如老是編成
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後面的語句。