循環(huán)
- 了解循環(huán)
- while語法【重點(diǎn)】
- while應(yīng)用
- break和continue
- while循環(huán)嵌套【重點(diǎn)】
- while循環(huán)嵌套應(yīng)用【難點(diǎn)】
- for循環(huán)
一. 循環(huán)簡介
1.1 循環(huán)的作用
思考:假如我雙十一需要付尾款,要提醒自己說:記得,說
100遍“記得,付尾款”。這個時候程序員會怎么做?答:100遍
print('記得,付尾款')
思考:復(fù)制粘貼100次嗎?
答:重復(fù)執(zhí)行100次一樣的代碼,程序中循環(huán)即可
循環(huán)的作用:讓代碼更高效的重復(fù)執(zhí)行。
1.2 循環(huán)的分類
在Python中,循環(huán)分為while和for兩種,最終實(shí)現(xiàn)效果相同。
二. while的語法
while 條件:
條件成立重復(fù)執(zhí)行的代碼1
條件成立重復(fù)執(zhí)行的代碼2
......
2.1 快速體驗(yàn)
需求:復(fù)現(xiàn)重復(fù)執(zhí)行100次print('記得,付尾款')(輸出更簡潔一些,我們這里設(shè)置5次)。
分析:初始值是0次,終點(diǎn)是5次,重復(fù)做的事情輸出“記得,付尾款”。
# 循環(huán)的計(jì)數(shù)器
i = 0
while i < 5:
print('記得,付尾款')
i += 1
print('任務(wù)結(jié)束')
三. while的應(yīng)用
3.1 應(yīng)用一:計(jì)算1-100累加和
分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前兩個數(shù)字的相加結(jié)果 + 下一個數(shù)字( 前一個數(shù)字 + 1)。
i = 1
result = 0
while i <= 100:
result += i
i += 1
# 輸出5050
print(result)
注意:為了驗(yàn)證程序的準(zhǔn)確性,可以先改小數(shù)值,驗(yàn)證結(jié)果正確后,再改成1-100做累加。
3.2 應(yīng)用二:計(jì)算1-100偶數(shù)累加和
分析:1-100的偶數(shù)和,即 2 + 4 + 6 + 8....,得到偶數(shù)的方法如下:
- 偶數(shù)即是和2取余結(jié)果為0的數(shù)字,可以加入條件語句判斷是否為偶數(shù),為偶數(shù)則累加
- 初始值為0 / 2 , 計(jì)數(shù)器每次累加2
3.2.1 方法一:條件判斷和2取余數(shù)則累加
# 方法一:條件判斷和2取余數(shù)為0則累加計(jì)算
i = 1
result = 0
while i <= 100:
if i % 2 == 0:
result += i
i += 1
# 輸出2550
print(result)
3.2.2 方法二:計(jì)數(shù)器控制
# 方法二:計(jì)數(shù)器控制增量為2
i = 0
result = 0
while i <= 100:
result += i
i += 2
# 輸出2550
print(result)
四、break和continue
break和continue是循環(huán)中滿足一定條件退出循環(huán)的兩種不同方式。
4.1 理解
舉例:一共吃5個蘋果,吃完第一個,吃第二個…,這里"吃蘋果"的動作是不是重復(fù)執(zhí)行?
情況一:如果吃的過程中,吃完第三個吃飽了,則不需要再吃第4個和第五個蘋果,即是吃蘋果的動作停止,這里就是break控制循環(huán)流程,即==終止此循環(huán)==。
情況二:如果吃的過程中,吃到第三個吃出一個大蟲子...,是不是這個蘋果就不吃了,開始吃第四個蘋果,這里就是continue控制循環(huán)流程,即==退出當(dāng)前一次循環(huán)繼而執(zhí)行下一次循環(huán)代碼==。
4.1.1 情況一: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之前一定要修改計(jì)數(shù)器,否則會陷入死循環(huán)
i += 1
continue
print(f'吃了第{i}個蘋果')
i += 1
五. while循環(huán)嵌套
5.1 應(yīng)用場景
故事梗概:有天小明犯錯誤了老手生氣了,懲罰:說3遍“老師, 我錯了”,這個程序是不是循環(huán)即可?但如果老師說:還要抄寫今天的作業(yè),這個程序怎么寫?
while 條件:
print('老師, 我錯了')
print('抄寫今天的作業(yè)')
但如果老師還是生氣,把這套懲罰要連續(xù)3天都執(zhí)行,有如何寫程序?
while 條件:
while 條件:
print('老師, 我錯了')
print('抄寫今天的作業(yè)')
5.2 語法
while 條件1:
條件1成立執(zhí)行的代碼
......
while 條件2:
條件2成立執(zhí)行的代碼
......
總結(jié):所謂while循環(huán)嵌套,就是一個while里面嵌套一個while的寫法,每個while和之前的基礎(chǔ)語法是相同的。
5.3 快速體驗(yàn):復(fù)現(xiàn)場景
5.3.1 代碼
j = 0
while j < 3:
i = 0
while i < 3:
print('老師,我錯了')
i += 1
print('抄寫今天的作業(yè)')
print('一套懲罰結(jié)束----------------')
j += 1
5.3.2 執(zhí)行結(jié)果

5.3.3 理解執(zhí)行流程
當(dāng)內(nèi)部循環(huán)執(zhí)行完成之后,再執(zhí)行下一次外部循環(huán)的條件判斷。
六. while循環(huán)嵌套應(yīng)用
6.1 應(yīng)用一:打印星號(正方形)
6.1.1 需求
*****
*****
*****
*****
*****
6.1.2 代碼
分析:一行輸出5個星號,重復(fù)打印5行
# 重復(fù)打印5行星星
j = 0
while j <= 4:
# 一行星星的打印
i = 0
while i <= 4:
# 一行內(nèi)的星星不能換行,取消print默認(rèn)結(jié)束符\n
print('*', end='')
i += 1
# 每行結(jié)束要換行,這里借助一個空的print,利用print默認(rèn)結(jié)束符換行
print()
j += 1
6.2 應(yīng)用二:打印星號(三角形)
6.2.1 需求
*
**
***
****
*****
6.2.2 代碼
分析:==一行輸出星星的個數(shù)和行號是相等的==,每行:重復(fù)打印行號數(shù)字個星號,將打印行星號的命令重復(fù)執(zhí)行5次實(shí)現(xiàn)打印5行。
# 重復(fù)打印5行星星
# j表示行號
j = 0
while j <= 4:
# 一行星星的打印
i = 0
# i表示每行里面星星的個數(shù),這個數(shù)字要和行號相等所以i要和j聯(lián)動
while i <= j:
print('*', end='')
i += 1
print()
j += 1
6.3 九九乘法表
6.3.1 執(zhí)行結(jié)果

6.3.2 代碼
# 重復(fù)打印9行表達(dá)式
j = 1
while j <= 9:
# 打印一行里面的表達(dá)式 a * b = a*b
i = 1
while i <= j:
print(f'{i}*{j}={j*i}', end='\t')
i += 1
print()
j += 1
七、for循環(huán)
7.1 語法
for 臨時變量 in 序列:
重復(fù)執(zhí)行的代碼1
重復(fù)執(zhí)行的代碼2
......
7.2 快速體驗(yàn)
str1 = 'itheima'
for i in str1:
print(i)
7.3 break
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不打印')
break
print(i)
7.4 continue
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不打印')
continue
print(i)
八. else
循環(huán)可以和else配合使用,else下方縮進(jìn)的代碼指的是==當(dāng)循環(huán)正常結(jié)束之后要執(zhí)行的代碼==。
8.1 while...else
需求:老師生氣了,要懲罰:連續(xù)說5遍“老師,我錯了”,如果道歉正常完畢老師就原諒我了,這個程序怎么寫?
i = 1
while i <= 5:
print('老師,我錯了')
i += 1
print('老師原諒我了...')
思考: 這個print是不是沒有循環(huán)也能執(zhí)行?
8.1.1 語法
while 條件:
條件成立重復(fù)執(zhí)行的代碼
else:
循環(huán)正常結(jié)束之后要執(zhí)行的代碼
8.1.2 示例
i = 1
while i <= 5:
print('老師,我錯了')
i += 1
else:
print('老師原諒我了,真開心,哈哈哈哈')
8.1.3 退出循環(huán)的方式
需求:女朋友生氣,要求道歉5遍:媳婦兒,我錯了。道歉到第三遍的時候,媳婦埋怨這一遍說的不真誠,是不是就是要退出循環(huán)了?這個退出有兩種可能性:
- 更生氣,不打算原諒,也不需要道歉了,程序如何書寫?
- 只一遍不真誠,可以忍受,繼續(xù)下一遍道歉,程序如何書寫?
- break
i = 1
while i <= 5:
if i == 3:
print('這遍說的不真誠')
break
print('媳婦兒,我錯了')
i += 1
else:
print('媳婦原諒我了,真開心,哈哈哈哈')
所謂else指的是循環(huán)正常結(jié)束之后要執(zhí)行的代碼,即如果是break終止循環(huán)的情況,else下方縮進(jìn)的代碼將不執(zhí)行。
- continue
i = 1
while i <= 5:
if i == 3:
print('這遍說的不真誠')
i += 1
continue
print('媳婦兒,我錯了')
i += 1
else:
print('媳婦原諒我了,真開心,哈哈哈哈')
因?yàn)閏ontinue是退出當(dāng)前一次循環(huán),繼續(xù)下一次循環(huán),所以該循環(huán)在continue控制下是可以正常結(jié)束的,當(dāng)循環(huán)結(jié)束后,則執(zhí)行了else縮進(jìn)的代碼。
8.2 for...else
8.2.1 語法
for 臨時變量 in 序列:
重復(fù)執(zhí)行的代碼
...
else:
循環(huán)正常結(jié)束之后要執(zhí)行的代碼
所謂else指的是循環(huán)正常結(jié)束之后要執(zhí)行的代碼,即如果是break終止循環(huán)的情況,else下方縮進(jìn)的代碼將不執(zhí)行。
8.2.2 示例
str1 = 'itheima'
for i in str1:
print(i)
else:
print('循環(huán)正常結(jié)束之后執(zhí)行的代碼')
8.2.3 退出循環(huán)的方式
- break終止循環(huán)
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不打印')
break
print(i)
else:
print('循環(huán)正常結(jié)束之后執(zhí)行的代碼')
沒有執(zhí)行else縮進(jìn)的代碼。
- continue控制循環(huán)
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不打印')
continue
print(i)
else:
print('循環(huán)正常結(jié)束之后執(zhí)行的代碼')
因?yàn)閏ontinue是退出當(dāng)前一次循環(huán),繼續(xù)下一次循環(huán),所以該循環(huán)在continue控制下是可以正常結(jié)束的,當(dāng)循環(huán)結(jié)束后,則執(zhí)行了else縮進(jìn)的代碼。
總結(jié)
- 循環(huán)的作用:控制代碼重復(fù)執(zhí)行
- while語法
while 條件:
條件成立重復(fù)執(zhí)行的代碼1
條件成立重復(fù)執(zhí)行的代碼2
......
- while循環(huán)嵌套語法
while 條件1:
條件1成立執(zhí)行的代碼
......
while 條件2:
條件2成立執(zhí)行的代碼
......
- for循環(huán)語法
for 臨時變量 in 序列:
重復(fù)執(zhí)行的代碼1
重復(fù)執(zhí)行的代碼2
......
- break退出整個循環(huán)
- continue退出本次循環(huán),繼續(xù)執(zhí)行下一次重復(fù)執(zhí)行的代碼
- else
- while和for都可以配合else使用
- else下方縮進(jìn)的代碼含義:當(dāng)循環(huán)正常結(jié)束后執(zhí)行的代碼
- break終止循環(huán)不會執(zhí)行else下方縮進(jìn)的代碼
- continue退出循環(huán)的方式執(zhí)行else下方縮進(jìn)的代碼