流程控制中除了分支結構的IF語句外,還有迴圈語句。讓我們一起來看看迴圈語句吧
本節內容結構圖如下:
1、迴圈作用
使用迴圈語句可以讓程式碼更加高效地重複執行。
2、分類
Python中迴圈語句有while迴圈及for迴圈2種:
while迴圈for迴圈3、while迴圈
語法格式
while 條件:
條件成立時重複執行的語句塊
場景1:陳少是一個在職員工,週一到週五都要正常上班。如何重複輸出“今天是星期x,要上班”的資訊呢?
程式碼示例1:
# 定義記數器變數ii = 1while i <= 5: print(f'今天是星期{i},要上班') # 修改記數器變數 i += 1
執行結果1
今天是星期1,要上班今天是星期2,要上班今天是星期3,要上班今天是星期4,要上班今天是星期5,要上班
4、迴圈的退出
Python中可以使用break和continue實現迴圈的退出。
break:終止整個迴圈
continue:退出本次迴圈,繼續下一次迴圈
注意:使用continue時,要記得在continue前修改記數器,否則會進入死迴圈
場景2:場景1中,如果陳少週四、週五請假了(即不用輸出“今天是星期4,要上班”及“今天是星期5,要上班”),就可使用break來實現。
程式碼示例2:
# 定義記數器變數ii = 1while i <= 5: if i == 4: break print(f'今天是星期{i},要上班') # 修改記數器變數 i += 1
執行結果2
今天是星期1,要上班今天是星期2,要上班今天是星期3,要上班
場景3:場景1中,如果陳少只是週四請假,週五正常上班(即不用輸出“今天是星期4,要上班”,但“今天是星期5,要上班”要輸出),就可使用continue來實現。
程式碼示例3
# 定義記數器變數ii = 1while i <= 5: if i == 4: i += 1 continue print(f'今天是星期{i},要上班') # 修改記數器變數 i += 1
執行結果3
今天是星期1,要上班今天是星期2,要上班今天是星期3,要上班今天是星期5,要上班
注:如果週四請假資訊要輸出可以在if i == 4:後加print("今天是星期4,請假了沒上班")
5、while迴圈巢狀
語法格式
while 條件:
條件成立時重複執行的語句塊
while 條件:
條件成立時重複執行的語句塊
場景4:列印臺歷,效果圖如下
程式碼示例4:
# 列印臺歷month = 1while month <= 12: print(f'{month}月份') print('星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', sep='\t') # 列印31天的月份 if (month < 8 and month % 2 > 0) or (month >= 8 and month % 2 == 0): day = 1 col = 1 while day <= 31: # 一週7天,只打印7列資料 if col <= 7: print(day, end='\t\t') col += 1 # 一週7天,超出7列則換行列印 else: print() print(day, end='\t\t') # 修改列數記數器,此處修改為2,為第1列資料已列印 col = 2 day += 1 # 列印30天的月份 elif (month == 4 or month == 6 or month == 9 or month == 11): day = 1 col = 1 while day <= 30: # 一週7天,只打印7列資料 if col <= 7: print(day, end='\t\t') col += 1 # 一週7天,超出7列則換行列印 else: print() print(day, end='\t\t') # 修改列數記數器,此處修改為2,為第1列資料已列印 col = 2 day += 1 # 列印2月份(此處以28天為例) else: day = 1 col = 1 while day <= 28: # 一週7天,只打印7列資料 if col <= 7: print(day, end='\t\t') col += 1 # 一週7天,超出7列則換行列印 else: print() print(day, end='\t\t') # 修改列數記數器,此處修改為2,為第1列資料已列印 col = 2 day += 1 print() month += 1
執行結果4:
2月份星期一 星期二 星期三 星期四 星期五 星期六 星期天1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 3月份星期一 星期二 星期三 星期四 星期五 星期六 星期天1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4月份星期一 星期二 星期三 星期四 星期五 星期六 星期天1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
注:執行結果只以2、3、4月份為例,分別展示28天、31天、30天的情況。
6、for迴圈
語法格式
for 臨時變數 in 序列:
重複執行的程式碼塊
示例:用for迴圈列印字串內容
print('使用for迴圈輸出字串內容')str1 = 'python'for v in str1: print(v)
執行結果
使用for迴圈輸出字串內容python
7、for迴圈巢狀
語法格式
for 臨時變數1 in 序列:
重複執行的程式碼塊
for 臨時變數2 in 序列:
重複執行的程式碼塊
程式碼示例與while迴圈巢狀類似,此處略。
8、else
迴圈語句可以和else結合使用,else下方縮排的程式碼為迴圈正常結束後執行的語句。
while...else...語法格式
while 條件:
條件成立時重複執行的程式碼塊
else
迴圈正常結束後執行的程式碼塊
for...else...語法格式
for 臨時變數 in 序列:
重複執行的程式碼塊
else
迴圈正常結束後執行的程式碼塊
while...else...的使用與for...else...類似,這裡使用for...else...為例,程式碼示例如下:
str2 = 'python'for v1 in str2: print(v1)else: print('迴圈正常結束之後要執行的程式碼')
執行結果