1. 程式人生 > 實用技巧 >深入淺出Python——Python基礎語法全解(下)

深入淺出Python——Python基礎語法全解(下)

上篇講到“迴圈簡介”,內容接下:

1、while的應用

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

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

i = 1
result = 0
while i <= 100:
    result += i
    i += 1

# 輸出5050
print(result)

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

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

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

  • 偶數即是和2取餘結果為0的數字,可以加入條件語句判斷是否為偶數,為偶數則累加
  • 初始值為0 / 2 , 計數器每次累加2

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

# 方法一:條件判斷和2取餘數為0則累加計算
i = 1
result = 0
while i <= 100:
    if i % 2 == 0:
        result += i
    i += 1

# 輸出2550
print(result)

方法二:計數器控制

# 方法二:計數器控制增量為2
i = 0
result = 0
while i <= 100:
    result += i
    i += 2

# 輸出2550
print(result)

2.break和continue

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

2.1 理解

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

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

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

2.2 break例項

i = 1
while i <= 5:
    if i == 4:
        print(f'吃飽了不吃了')
        break
    print(f'吃了第{i}個蘋果')
    i += 1

2.3 continue例項

i = 1
while i <= 5:
    if i == 3:
        print(f'大蟲子,第{i}個不吃了')
        # 在continue之前一定要修改計數器,否則會陷入死迴圈
        i += 1
        continue
    print(f'吃了第{i}個蘋果')
    i += 1

3. while迴圈巢狀

3.1 語法

while 條件1:
    條件1成立執行的程式碼
    ......
    while 條件2:
        條件2成立執行的程式碼
        ......

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

3.2 執行過程

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

3.3 while迴圈巢狀應用

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

# 重複列印5行星星
j = 0
while j <= 4:
    # 一行星星的列印
    i = 0
    while i <= 4:
        # 一行內的星星不能換行,取消print預設結束符\n
        print('*', end='')
        i += 1
    # 每行結束要換行,這裡藉助一個空的print,利用print預設結束符換行
    print()
    j += 1

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

# 重複列印5行星星
# j表示行號
j = 0
while j <= 4:
    # 一行星星的列印
    i = 0
    # i表示每行裡面星星的個數,這個數字要和行號相等所以i要和j聯動
    while i <= j:
        print('*', end='')
        i += 1
    print()
    j += 1

應用三:九九乘法表

# 重複列印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

十三、else

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

1. while…else

1.1 語法

while 條件:
    條件成立重複執行的程式碼
else:
    迴圈正常結束之後要執行的程式碼

1.2 示例

i = 1
while i <= 5:
    print('Hello World')
    i += 1
else:
    print('執行完畢')

1.3 退出迴圈的方式

  • break終止迴圈
i = 1
while i <= 5:
    if i == 3:
        print("提前結束")
        break
    print('Hello World')
    i += 1
else:
    print('執行完畢')

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

  • continue控制迴圈
i = 1
while i <= 5:
    if i == 3:
        print("打斷一下")
        i += 1
        continue
    print('Hello World')
    i += 1
else:
    print('執行完畢')

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

2. for…else

2.1 語法

for 臨時變數 in 序列:
    重複執行的程式碼
    ...
else:
    迴圈正常結束之後要執行的程式碼