前面我們講過了Python中的循環(huán)語句有兩種:while循環(huán)和for循環(huán)。Python語言可以允許在一個(gè)循環(huán)體內(nèi)嵌套另一個(gè)循環(huán)體。
比如:在while循環(huán)中可以嵌套for循環(huán);也可以在for循環(huán)中嵌套while循環(huán);當(dāng)然for循環(huán)中也可以嵌套另一個(gè)for循環(huán),下面以兩個(gè)例子來示范:
1、九九乘法表的實(shí)現(xiàn):
# 外層循環(huán) for i in range(1,10): # 內(nèi)層循環(huán) for j in range(1,i+1): print(i,"*",j,"=",i*j,"t",end="") print("")
輸出結(jié)果可以看到:

上面的例子中用到了for循環(huán)下面還有另一個(gè)for循環(huán),實(shí)現(xiàn)九九乘法的矩陣。
2、索引50以內(nèi)的所有質(zhì)數(shù):
# 導(dǎo)入math模塊 import math i=2 # 外層循環(huán) while i<50: j=2 # 內(nèi)層循環(huán) while j<=math.sqrt(i): if i%j==0: break j+=1 if j>math.sqrt(i): print(i,"是素?cái)?shù)") i+=1 print("Over")
這里先給大家回憶下質(zhì)數(shù)的含義:一個(gè)大于1的自然數(shù),除了1和它本身外,不能被其他自然數(shù)整除,也就是需要用到取模運(yùn)算%。

這個(gè)例子中在while循環(huán)中再嵌套一個(gè)while循環(huán),實(shí)現(xiàn)位置索引。此例中用到了math模塊下的math.sqrt()這個(gè)函數(shù),用于快速識(shí)別質(zhì)數(shù)(當(dāng)判斷i是不是質(zhì)數(shù)時(shí),理論上需要從2開始一直判斷到i,但是實(shí)際上只需要判斷到√i)。
上面兩個(gè)例子基本上將循環(huán)的嵌套使用展現(xiàn)出來了,要想熟練使用嵌套循環(huán),以下兩點(diǎn)需要謹(jǐn)記:
- 循環(huán)嵌套時(shí),外層循環(huán)和內(nèi)層循環(huán)間是包含關(guān)系,也就是內(nèi)層循環(huán)必須被完全包含在外層循環(huán)中。
- 當(dāng)程序中出現(xiàn)循環(huán)嵌套時(shí),程序每執(zhí)行一次外層循環(huán),其內(nèi)層循環(huán)必須循環(huán)所有的次數(shù)(即內(nèi)層循環(huán)結(jié)束)后,才能進(jìn)入到外層循環(huán)的下一次循環(huán)。