Python中for迴圈與while迴圈
一、迴圈的分類
在Python中迴圈分為while迴圈和for迴圈,最終實現效果相同
二、while的語法
while 條件:
條件成立重複執行的程式碼1
條件成立重複執行的程式碼2
......
2.1 示例
需求:實現重複執行5次print('媳婦兒,我錯了')
分析:初始值是0次,終點是5次,重複做的事情輸出”媳婦兒,我錯了“
#迴圈的計數器
i=0
while i<5:
print('媳婦兒,我錯了')
i+=1
print('執行結束')
三、while的應用
3.1 示例1:計算1-100累加和
分析:1-100的累加和,即1+1+3+4...,即前兩個數字相加的結果+下一個數字(前一個數字+1)
i=1
result=0
while i<=100:
result+=i
i += 1
# 輸出5050
print(result)
注意:為了驗證程式的準確性,可以先改小數值,驗證結果正確後,再改成1-100做累加
3.2 示例2:計算1-100偶數累加和
分析:1-100的偶數和,即 2 + 4 + 6 + 8....,得到偶數的⽅方法如下:
- 偶數即是和2取餘結果為0的數字,可以加⼊入條件語句句判斷是否為偶數,為偶數則累加
- 初始值為0 / 2 , 計數器器每次累加2
3.2.1 方法1:條件判斷和2取餘數則累加
# 方法1:條件判斷和2取餘數為0則累加計算 i=1 result=0 while i<=100: if i % 2 == 0: result += i i += 1 # 輸出2550 print(result)
3.2.2 方法二:計數器控制
# 方法二:計數器控制增量為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
#情況一:break
i = 1
while i <= 5:
if i == 4:
print(f'吃飽了不吃了')
break
print(f'吃了第{i}個蘋果')
i += 1
4.1.2 情況二:continue
i=1
while i<=5:
if i==3:
print(f'大蟲子,第{i}個不吃了')
#在continue之前一定要修改計數器,否則會陷入死迴圈
i += 1
continue
print(f'吃了第{i}個蘋果')
i += 1
五、while迴圈巢狀
5.1 應用場景
故事梗概︰有天女朋友又生氣了,懲罰∶說3遍"媳婦兒,我錯了",這個程式是不是迴圈即可?但如果
女朋友說:還要刷今天晚飯的碗,這個程式怎麼書寫
while 條件:
print('媳婦,我錯了')
print('刷晚飯的碗')
但如果女朋友還是生氣,把這套乘法要連續三天都執行,有如何書寫程式?
while 條件:
while 條件:
print('媳婦,我錯了')
print('刷晚飯的碗')
5.2 語法
while 條件:
條件1執行的程式碼
...
while 條件2:
條件2執行的程式碼
...
總結:所謂的while迴圈巢狀,就是一個while裡面巢狀一個while的寫法,每個while和之前的基礎語法是相同的
5.3 示例
5.3.1
j = 0
while j < 3:
i = 0
while i < 3:
print('媳婦⼉兒,我錯了了')
i += 1
print('刷晚飯的碗')
print('⼀一套懲罰結束----------------')
j += 1
5.3.2 執行結果
5.3.3 理解執行
當內部迴圈執行完之後,再執行下一次外部迴圈的條件判斷
六、while迴圈巢狀應用
6.1 列印星號(正方形)
分析:一行輸出5個星號,重複列印5行
#分析:一行輸出5個星號,重複列印5行
# 重複列印5行星星
j=0 #初始值為0
while j<=4:
#一行星星的列印
i=0
while i<=4:
# 一行內的星星不能換行,取消print預設結束符\n
print('*',end='')
i+=1
# 每行結束換行時,這裡藉助一個空的print,利用print預設結束符換行
print()
j+=1
6.2 列印星號(三角形)
分析:一行輸出星星的個數和行號是相等的,每行:重複列印行號數字個星號將列印行星號的命令重複執行5次實現列印5行
# 重複列印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 執行結果
#重複列印9行表示式
j = 1 #定義初始值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 語法
for 臨時變數 in 序列
重複執行的程式碼1
重複執行的程式碼2
...
7.2 體驗
str1='ithema'
for i in str1:
print(i)
7.3break
str1='ithema'
for i in str1:
if i=='e':
print('遇到e不列印')
break
print(i)
7.4 continue
str1='ithema'
for i in str1:
if i=='e':
print('遇到e不列印')
continue
print(i)
八、else
迴圈可以和else配合使用,else下方所進的程式碼指的是當前迴圈正常結束後要執行的程式碼
8.1 while...elae
需求:女朋友生氣了,要懲罰:連續說5遍‘媳婦,我錯了’,如果道歉正常完畢女朋友就原諒我了,這個程式怎麼寫?
i=1
while i<5:
print('媳婦,我錯了')
i+=1
print('媳婦原諒我了')
思考:這個print是不是沒有迴圈也能執行?
8.1.1 語法
while 條件:
條件成立執行的程式碼
else:
迴圈正常結束後要執行的程式碼
8.1.2 示例
i=1
while i<=5:
print('媳婦,我錯了')
i+=1
else:
print('媳婦原諒我了,真開心,哈哈哈')
8.1.3 退出迴圈的方式
需求:女朋友生氣,要求道歉5遍:媳婦,我錯了。道歉到第三遍的時候,媳婦埋怨這一遍說的不真誠,是不是就要退出迴圈了?這個退出有兩種可能性:
- 更生氣,不打算原諒,也不需要道歉了,程式如何書寫
- 說一邊不真誠可以忍受,繼續下一遍道歉,程式如何書寫
- break
i=1
while i <=5:
if i==3:
print('這遍說的不真誠')
break
print('媳婦,我錯了')
i+=1
else:
print('媳婦原諒我了,真開心,哈哈哈')
所謂else指的是迴圈正常結束之後要執行的程式碼,即如果是break終止迴圈的情況,else下方縮排的程式碼將不執行
2.continue
i=1
while i <=5:
if i==3:
print('這遍說的不真誠')
i+=1
continue
print('媳婦,我錯了')
i+=1
else:
print('媳婦原諒我了,真開心,哈哈哈')
因為continue是退出當前一次迴圈,繼續下一次迴圈,所以該迴圈在contnue控制下是可以正常結束的,當迴圈結束後,則執行了else縮排的程式碼
8.2 for...else
8.2.1 語法
for 臨時變數 in 序列:
重複執行的程式碼
...
else:
迴圈正常結束之後要執行的程式碼
8.2.2 示例
str1='ithema'
for i in str1:
print(i)
else:
print('迴圈正常結束之後執行的程式碼')
8.2.3 退出迴圈的方式
- break終止迴圈
str1='ithema'
for i in str1:
if i=='e':
print('遇到e不列印')
break
print(i)
else:
print('迴圈正常結束之後執行的程式碼')
- continue控制迴圈
str1='ithema'
for i in str1:
if i=='e':
print('遇到e不列印')
continue
print(i)
else:
print('迴圈正常結束之後執行的程式碼')
因為continue是退出當前一次迴圈,繼續下一次迴圈,所以該迴圈在continue控制下是可以正常結束的,當迴圈結束後,則執行了else縮排的程式碼。