###### tags: `chapter 7` `Python` # 7-2 串列迴圈與其他架構 # 套用上一章學到的串列(list),迴圈又可以玩出新的花樣,上一小節提到`range()`函數幫助我們更容易計算迴圈跑得次數,其實背後的運作模式是產生一個串列,並依序去讀取串列裡的值,如果把`range()`函數替換成我們想要依序輸出的串列,就可以更方便的完成工作啦! ```python= score = [30 , 50 , 70 , 80 , 40 , 20 , 50] for each_score in score: print(each_score) ``` 這樣子省去了用`times`當作`index`去指定串列內元素的麻煩囉! ## 巢狀迴圈 ## 迴圈和`if`敘述式一樣都有巢狀的寫法,巢狀迴圈其中一個經典的例子就是用來實作泡泡排序法(Bubble Sort),經典的回家作業大概就是靠左金字塔了,以下幫大家示範靠左金字塔,畢竟排序已經有`sort()`了。 ```python= for i in range(0 , 5): for j in range(0 , i): print("a" , end="") # 將print()函數的結尾從'換行'換成'無' print() # 換行 ``` 除了靠左金字塔大家也可以思考一下9x9乘法表和靠中金字塔怎麼實做哦!! ## for...else 架構 ## 前面提到`if...else`架構時說`else`的部分是當條件判斷式不成立的時候執行的程式碼區塊,`for...else`也是,因為`for`迴圈本身就自帶一個條件判斷式,當該條件判斷式不程式的時候,一樣會執行`else`的程式碼區塊。 如果和串列迴圈合併使用的話則會換成「串列裡還有沒有物件」作為條件判斷式。 ```python= for i in range(0, 3): print(i) else : print("輸出好多東西,好累") # 0 # 1 # 2 # 輸出好多東西,好累 ``` * 範例:輸出0~100的質數 ```python= for i in range(1, 100): judge = True for k in range(1, i): if i % k == 0 and i != k and k != 1: judge = False break if judge == True: print(i) ```