首頁>技術>

## 1.2 迴圈的分類

在Python中,迴圈分為`while`和`for`兩種,最終實現效果相同。

# 二. while的語法

``` python

while 條件:

條件成立重複執行的程式碼1

條件成立重複執行的程式碼2

......

```

## 2.1 快速體驗

需求:復現重複執行100次`print('媳婦兒,我錯了')`(輸出更簡潔一些,我們這裡設定5次)。

分析:初始值是0次,終點是5次,重複做的事情輸出“媳婦兒, 我錯了”。

``` python

# 迴圈的計數器

i = 0

while i < 5:

print('媳婦兒,我錯了')

i += 1

print('任務結束')

```

# 三. while的應用

## 3.1 應用一:計算1-100累加和

分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前兩個數字的相加結果 + 下一個數字( 前一個數字 + 1)。

``` python

i = 1

result = 0

while i <= 100:

result += i

i += 1

# 輸出5050

print(result)

```

> 注意:為了驗證程式的準確性,可以先改小數值,驗證結果正確後,再改成1-100做累加。

## 3.2 應用二:計算1-100偶數累加和

分析:1-100的偶數和,即 2 + 4 + 6 + 8....,得到偶數的方法如下:

- 偶數即是和2取餘結果為0的數字,可以加入條件語句判斷是否為偶數,為偶數則累加

- 初始值為0 / 2 , 計數器每次累加2

### 3.2.1 方法一:條件判斷和2取餘數則累加

``` python

# 方法一:條件判斷和2取餘數為0則累加計算

i = 1

result = 0

while i <= 100:

if i % 2 == 0:

result += i

i += 1

# 輸出2550

print(result)

```

### 3.2.2 方法二:計數器控制

``` python

# 方法二:計數器控制增量為2

i = 0

result = 0

while i <= 100:

result += i

i += 2

# 輸出2550

print(result)

```

# 四、break和continue

break和continue是迴圈中滿足一定條件退出迴圈的兩種不同方式。

## 4.1 理解

舉例:一共吃5個蘋果,吃完第一個,吃第二個…,這裡"吃蘋果"的動作是不是重複執行?

情況一:如果吃的過程中,吃完第三個吃飽了,則不需要再吃第4個和第五個蘋果,即是吃蘋果的動作停止,這裡就是break控制迴圈流程,即==終止此迴圈==。

情況二:如果吃的過程中,吃到第三個吃出一個大蟲子...,是不是這個蘋果就不吃了,開始吃第四個蘋果,這裡就是continue控制迴圈流程,即==退出當前一次迴圈繼而執行下一次迴圈程式碼==。

### 4.1.1 情況一:break

``` python

i = 1

while i <= 5:

if i == 4:

print(f'吃飽了不吃了')

break

print(f'吃了第{i}個蘋果')

i += 1

```

執行結果:

![image-20190124114340900](迴圈.assets/image-20190124114340900.png)

### 4.1.2 情況二:continue

``` python

i = 1

while i <= 5:

if i == 3:

print(f'大蟲子,第{i}個不吃了')

# 在continue之前一定要修改計數器,否則會陷入死迴圈

i += 1

continue

print(f'吃了第{i}個蘋果')

i += 1

```

執行結果:

![image-20190124114514775](迴圈.assets/image-20190124114514775.png)

# 五. while迴圈巢狀

## 5.1 應用場景

故事梗概:有天女朋友又生氣了,懲罰:說3遍“媳婦兒, 我錯了”,這個程式是不是迴圈即可?但如果女朋友說:還要刷今天晚飯的碗,這個程式怎麼書寫?

``` python

while 條件:

print('媳婦兒, 我錯了')

print('刷晚飯的碗')

```

但如果女朋友還是生氣,把這套懲罰要連續3天都執行,有如何書寫程式?

``` python

while 條件:

while 條件:

print('媳婦兒, 我錯了')

print('刷晚飯的碗')

```

## 5.2 語法

``` python

while 條件1:

條件1成立執行的程式碼

......

while 條件2:

條件2成立執行的程式碼

......

```

> 總結:所謂while迴圈巢狀,就是一個while裡面巢狀一個while的寫法,每個while和之前的基礎語法是相同的。

## 5.3 快速體驗:復現場景

### 5.3.1 程式碼

``` python

j = 0

while j < 3:

i = 0

while i < 3:

print('媳婦兒,我錯了')

i += 1

print('刷晚飯的碗')

print('一套懲罰結束----------------')

j += 1

```

### 5.3.2 執行結果

![image-20190104161506542](迴圈.assets/image-20190104161506542-6589706.png)

### 5.3.3 理解執行流程

當內部迴圈執行完成之後,再執行下一次外部迴圈的條件判斷。

![](迴圈.assets/while2.png)

# 六. while迴圈巢狀應用

## 6.1 應用一:列印星號(正方形)

### 6.1.1 需求

``` html

*****

*****

*****

*****

*****

```

### 6.1.2 程式碼

分析:一行輸出5個星號,重複列印5行

``` python

# 重複列印5行星星

j = 0

while j <= 4:

# 一行星星的列印

i = 0

while i <= 4:

# 一行內的星星不能換行,取消print預設結束符\n

print('*', end='')

i += 1

# 每行結束要換行,這裡藉助一個空的print,利用print預設結束符換行

print()

j += 1

```

## 6.2 應用二:列印星號(三角形)

### 6.2.1 需求

``` html

*

**

***

****

*****

```

### 6.2.2 程式碼

分析:==一行輸出星星的個數和行號是相等的==,每行:重複列印行號數字個星號,將列印行星號的命令重複執行5次實現列印5行。

``` python

# 重複列印5行星星

# j表示行號

j = 0

while j <= 4:

# 一行星星的列印

i = 0

# i表示每行裡面星星的個數,這個數字要和行號相等所以i要和j聯動

while i <= j:

print('*', end='')

i += 1

print()

j += 1

```

## 6.3 九九乘法表

### 6.3.1 執行結果

![image-20190104163553616](迴圈.assets/image-20190104163553616-6590953.png)

### 6.3.2 程式碼

``` python

# 重複列印9行表示式

j = 1

while j <= 9:

# 列印一行裡面的表示式 a * b = a*b

i = 1

while i <= j:

print(f'{i}*{j}={j*i}', end='\t')

i += 1

print()

j += 1

```

# 七、for迴圈

## 7.1 語法

``` python

for 臨時變數 in 序列:

重複執行的程式碼1

重複執行的程式碼2

......

```

## 7.2 快速體驗

``` python

str1 = 'itheima'

for i in str1:

print(i)

```

執行結果:

![image-20190104164152311](迴圈.assets/image-20190104164152311-6591312.png)

## 7.3 break

``` python

str1 = 'itheima'

for i in str1:

if i == 'e':

print('遇到e不列印')

break

print(i)

```

執行結果:

![image-20190104165242555](迴圈.assets/image-20190104165242555-6591962.png)

## 7.4 continue

```python

str1 = 'itheima'

for i in str1:

if i == 'e':

print('遇到e不列印')

continue

print(i)

```

執行結果:

![image-20190104165413160](迴圈.assets/image-20190104165413160-6592053.png)

# 八. else

迴圈可以和else配合使用,else下方縮排的程式碼指的是==當迴圈正常結束之後要執行的程式碼==。

## 8.1 while...else

需求:女朋友生氣了,要懲罰:連續說5遍“媳婦兒,我錯了”,如果道歉正常完畢女朋友就原諒我了,這個程式怎麼寫?

``` python

i = 1

while i <= 5:

print('媳婦兒,我錯了')

i += 1

print('媳婦兒原諒我了...')

```

> 思考: 這個print是不是沒有迴圈也能執行?

### 8.1.1 語法

``` python

while 條件:

條件成立重複執行的程式碼

else:

迴圈正常結束之後要執行的程式碼

```

### 8.1.2 示例

``` python

i = 1

while i <= 5:

print('媳婦兒,我錯了')

i += 1

else:

print('媳婦原諒我了,真開心,哈哈哈哈')

```

![image-20190125111816497](迴圈.assets/image-20190125111816497.png)

### 8.1.3 退出迴圈的方式

需求:女朋友生氣,要求道歉5遍:媳婦兒,我錯了。道歉到第三遍的時候,媳婦埋怨這一遍說的不真誠,是不是就是要退出迴圈了?這個退出有兩種可能性:

- 更生氣,不打算原諒,也不需要道歉了,程式如何書寫?

- 只一遍不真誠,可以忍受,繼續下一遍道歉,程式如何書寫?

1. break

``` python

i = 1

while i <= 5:

if i == 3:

print('這遍說的不真誠')

break

print('媳婦兒,我錯了')

i += 1

else:

print('媳婦原諒我了,真開心,哈哈哈哈')

```

![image-20190125111952693](迴圈.assets/image-20190125111952693.png)

> 所謂else指的是迴圈正常結束之後要執行的程式碼,即如果是break終止迴圈的情況,else下方縮排的程式碼將不執行。

2. continue

``` python

i = 1

while i <= 5:

if i == 3:

print('這遍說的不真誠')

i += 1

continue

print('媳婦兒,我錯了')

i += 1

else:

print('媳婦原諒我了,真開心,哈哈哈哈')

```

![image-20190125112111170](迴圈.assets/image-20190125112111170.png)

> 因為continue是退出當前一次迴圈,繼續下一次迴圈,所以該迴圈在continue控制下是可以正常結束的,當迴圈結束後,則執行了else縮排的程式碼。

## 8.2 for...else

### 8.2.1 語法

``` python

for 臨時變數 in 序列:

重複執行的程式碼

...

else:

迴圈正常結束之後要執行的程式碼

```

> 所謂else指的是迴圈正常結束之後要執行的程式碼,即如果是break終止迴圈的情況,else下方縮排的程式碼將不執行。

### 8.2.2 示例

``` python

str1 = 'itheima'

for i in str1:

print(i)

else:

print('迴圈正常結束之後執行的程式碼')

```

### 8.2.3 退出迴圈的方式

1. break終止迴圈

``` python

str1 = 'itheima'

for i in str1:

if i == 'e':

print('遇到e不列印')

break

print(i)

else:

print('迴圈正常結束之後執行的程式碼')

```

執行結果:

![image-20190104165551501](迴圈.assets/image-20190104165551501-6592151.png)

> 沒有執行else縮排的程式碼。

2. continue控制迴圈

``` python

str1 = 'itheima'

for i in str1:

if i == 'e':

print('遇到e不列印')

continue

print(i)

else:

print('迴圈正常結束之後執行的程式碼')

```

執行結果:

![image-20190104165714740](迴圈.assets/image-20190104165714740-6592234.png)

> 因為continue是退出當前一次迴圈,繼續下一次迴圈,所以該迴圈在continue控制下是可以正常結束的,當迴圈結束後,則執行了else縮排的程式碼。

# 總結

- 迴圈的作用:控制程式碼重複執行

- while語法

``` python

while 條件:

條件成立重複執行的程式碼1

條件成立重複執行的程式碼2

......

```

- while迴圈巢狀語法

```python

while 條件1:

條件1成立執行的程式碼

......

while 條件2:

條件2成立執行的程式碼

......

```

- for迴圈語法

``` python

for 臨時變數 in 序列:

重複執行的程式碼1

重複執行的程式碼2

......

```

- break退出整個迴圈

- continue退出本次迴圈,繼續執行下一次重複執行的程式碼

- else

- while和for都可以配合else使用

- else下方縮排的程式碼含義:當迴圈正常結束後執行的程式碼

- break終止迴圈不會執行else下方縮排的程式碼

- continue退出迴圈的方式執行else下方縮排的程式碼

69
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Linux 檔案操作使用者空間程式設計