不論是if判斷式還是for、while迴圈都支援巢狀(層疊式)的撰寫,就像我上一篇把if判斷式塞進for、while迴圈裡那樣,但各層之間的縮排請務必清楚,冒號也要記得加上噢!
雙重迴圈(多重迴圈)是程式中重要的結構,是處理多層(多軌)迭代或是運算的必要手段,總而言之,就是迴圈裡面還有迴圈,來看看簡單的例子來理解:
for i in range(1,6,1):
for j in range(1,3,1):
print(i,j)
以下為執行結果
1 1
1 2
2 1
2 2
3 1
3 2
4 1
4 2
5 1
5 2
慢慢觀察其實不難理解,可以把巢狀迴圈比喻成時鐘的分針跟秒針,秒針要跑完一圈,分針才會前進一格,同樣地,外層迴圈i要等內層迴圈j全部跑完才能進到下一個數字,所以當j從1變到2後,i就會加1,然後j又會從1開始印,照這樣持續印下去,直到外層迴圈結束,就會出現上述執行結果。
那麼學習程式並不是光用看的就能學會,相信大家對這句話並不陌生(笑,所以馬上來練習能不能印出巢狀迴圈的經典範例-九九乘法表吧。
想要的結果:
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
...
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
...
9 * 8 = 72
9 * 9 = 81
自行練習的解答:
for i in range(1,10,1):
for j in range(1,10,1):
print(i,"*",j,"=",i*j)
接下來還有一些更進階的範例來試試~
想要的結果(印出"*"):
1.
*******
*******
*******
*******
2.
*
***
*****
*******
3.
*
***
*****
*******
*********
*******
*****
***
*
第一題:
for i in range(0,4):
for j in range(0,7):
print("*",end="") #設定end=''讓print()不要換行
print() #每印完j的最後一個就要換行
第二題:
for i in range(1,8,2):
for j in range(i):
print("*",end="")
print()
第三題:
for i in range(1,10,2):
for j in range(i):
print("*",end="")
print()
for i in range(7,0,-2):
for j in range(i):
print("*",end="")
print()
比較需要注意的地方是換行的部分,這邊是使用print()選擇性參數,在此我也不多做說明,通常是有需要的時候才去做設定的。以上練習其實都大同小異,若能清楚理解的話,就會變得很輕鬆囉。
明天就可以來看看串列與它的夥伴們~