---
# System prepended metadata

title: 7-2 串列迴圈與其他架構
tags: [chapter 7, Python]

---

###### 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)
```