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

點擊並拖拽以移動

img點擊並拖拽以移動

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 執行結果

img點擊並拖拽以移動

5.3.3 理解執行

當內部循環執行完之后,再執行下一次外部循環的條件判斷

img點擊並拖拽以移動

六、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

點擊並拖拽以移動

img點擊並拖拽以移動

七、for循環

7.1 語法

for 臨時變量 in 序列
	重復執行的代碼1
    重復執行的代碼2
    ...

7.2 體驗

str1='ithema'
for i in str1:
	print(i)

image-20200912131821177

7.3break

str1='ithema'
for i in str1:
    if i=='e':
        print('遇到e不打印')
        break
    print(i)

image-20200912132120701

7.4 continue

str1='ithema'
for i in str1:
    if i=='e':
        print('遇到e不打印')
        continue
    print(i)

image-20200912132313062

八、else

循環可以和else配合使用,else下方所進的代碼指的是當前循環正常結束后要執行的代碼

8.1 while...elae

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

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

image-20200912132815117

思考:這個print是不是沒有循環也能執行?

8.1.1 語法

while 條件:
	條件成立執行的代碼
else:
	循環正常結束后要執行的代碼

8.1.2 示例

i=1
while i<=5:
    print('媳婦,我錯了')
    i+=1
else:
    print('媳婦原諒我了,真開心,哈哈哈')

image-20200912133133549

8.1.3 退出循環的方式

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

  • 更生氣,不打算原諒,也不需要道歉了,程序如何書寫
  • 說一邊不真誠可以忍受,繼續下一遍道歉,程序如何書寫
  1. break
i=1
while i <=5:
    if i==3:
        print('這遍說的不真誠')
        break
    print('媳婦,我錯了')
    i+=1
else:
    print('媳婦原諒我了,真開心,哈哈哈')

image-20200912134745928

所謂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('循環正常結束之后執行的代碼')
    

image-20200912144411066

8.2.3 退出循環的方式

  1. break終止循環
str1='ithema'
for i in str1:
    if i=='e':
        print('遇到e不打印')
        break
    print(i)
else:
    print('循環正常結束之后執行的代碼')
    

image-20200912145955881

  1. continue控制循環
str1='ithema'
for i in str1:
    if i=='e':
        print('遇到e不打印')
        continue
    print(i)
else:
    print('循環正常結束之后執行的代碼')

image-20200912150104137

因為continue是退出當前一次循環,繼續下一次循環,所以該循環在continue控制下是可以正常結束的,當循環結束后,則執行了else縮進的代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM