iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 7
0
自我挑戰組

Python 30天學習日誌系列 第 7

Day07-For、While迴圈(下)

巢狀迴圈

不論是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()選擇性參數,在此我也不多做說明,通常是有需要的時候才去做設定的。以上練習其實都大同小異,若能清楚理解的話,就會變得很輕鬆囉。

明天就可以來看看串列與它的夥伴們~

參考資料

  • 書名-輕鬆學Python3 /孫宏明-編著

上一篇
Day06-For、While迴圈(上)
下一篇
Day08-串列List與元組Tuple
系列文
Python 30天學習日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言