『無為則無心』Python基礎 — 15、Python流程控制語句(for迴圈語句)

繁華似錦Fighting發表於2021-07-01

提示:上一篇文章中詳細的說明了while迴圈語句,本篇文章來說說Python中的for迴圈語句。

1、for迴圈語法

# 注:臨時變數是程式設計師自定義的臨時變數。
for 臨時變數 in 序列:
    重複執行的程式碼1
    重複執行的程式碼2
    ......

for迴圈的程式碼塊會執行多次,序列中有幾個元素就會執行幾次,

每執行一次就會將序列中的一個元素賦值給臨時變數,

所以我們可以通過臨時變數,來獲取列表中的每個元素。

快速體驗

"""
1. 準備一個資料序列
2. 進行for迴圈
"""
str1 = 'Hello Pyhton'
for i in str1:
    print(i)

執行結果:

image

2、for迴圈中的breakcontinue

for迴圈中的breakcontinuewhile迴圈中的用法一樣。

下面我們直接練習來說明。

(1)break說明

str1 = 'Hello Pyhton'
for i in str1:
    if i == ' ': # 空格
        print('遇到空格不列印')
        break
    print(i)

執行結果:

image

(2)continue說明

str1 = 'Hello Pyhton'
for i in str1:
    if i == ' ': # 空格
        print('遇到空格不列印')
        continue
    print(i)

執行結果:

image

3、迴圈+else結構

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

(1)while...else

1)描述:

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

i = 1
while i <= 5:
    print('媳婦兒,我錯了')
    i += 1
print('媳婦兒原諒我了...')

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

是的,能夠執行。

但是這裡想說的是,只有懲罰的迴圈正常結束了,才能說出原諒你了。如果你的懲罰沒有正常結束,是不能夠被原諒的。

所以像這種懲罰後被原諒,這兩部分是有一種依賴關係的,這個時候就不能像上邊這樣寫了,就需要使用while...else格式的迴圈語句來完成編碼。

2)語法

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

3)示例

"""
1. 書寫道歉的迴圈。
2. 迴圈正常結束要執行的程式碼寫在else中。
"""
i = 1
while i <= 5:
    print('媳婦兒,我錯了')
    i += 1
else:
    print('媳婦原諒我了,真開心,哈哈哈哈')


"""
輸出結果:
媳婦兒,我錯了
媳婦兒,我錯了
媳婦兒,我錯了
媳婦兒,我錯了
媳婦兒,我錯了
媳婦原諒我了,真開心,哈哈哈哈
"""

(2)while...else退出迴圈的方式

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

  • 更生氣,不打算原諒,也不需要道歉了,程式如何書寫?
  • 只一遍不真誠,可以忍受,繼續下一遍道歉,程式如何書寫?

1)break方式

i = 1
while i <= 5:
    if i == 3:
        print('這遍說的不真誠,別說了!')
        break
    print('媳婦兒,我錯了')
    i += 1
else:
    print('媳婦原諒我了,真開心,哈哈哈哈')

執行結果:

image

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

2)continue方式

i = 1
while i <= 5:
    if i == 3:
        print('這遍說的不真誠,給我注意點!')
        i += 1
        continue
    print('媳婦兒,我錯了,')
    i += 1
else:
    print('媳婦原諒我了,真開心,哈哈哈哈')

執行結果:

image

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

(3)for...else

while...else的用法一樣的。

1) 語法

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

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

2)示例

str1 = 'Python'
for i in str1:
    print(i)
else:
    print('迴圈正常結束之後執行的程式碼')

(4)for...else退出迴圈的方式

1)break終止迴圈

str1 = 'Python'
for i in str1:
    if i == 'h':
        print('遇到h不列印')
        break
    print(i)
else:
    print('迴圈正常結束之後執行的程式碼')

執行結果:

image

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

2)continue終止迴圈

str1 = 'Python'
for i in str1:
    if i == 'h':
        print('遇到h不列印')
        continue
    print(i)
else:
    print('迴圈正常結束之後執行的程式碼')

執行結果:

image

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

相關文章