Python入門之(3 3)迴圈結構

2021-09-25 10:06:46 字數 4950 閱讀 8514

目錄

迴圈結構

1.1while迴圈

1.2for迴圈

1.3break和continue語句

1.4迴圈中的else語句

1.5巢狀迴圈

1.6字串的遍歷迴圈

1.7pass語句

迴圈結構是結構化程式設計中常用的結構,可以簡化程式,或解決順序結構和選擇結構無法解決的問題。迴圈是指在滿足一定條件的情況下,重複執行一組語句的結構。重複執行的語句稱作迴圈體。

while迴圈語法格式如下:

[初始化語句]

while (迴圈條件):

語句塊[迭代語句]

迴圈結構的執行流程如下所述:執行到while迴圈的時候,先判斷「迴圈條件」,如果為真,則執行下面縮排的迴圈體;執行完畢,再次判斷「迴圈條件」。若為真,繼續執行迴圈體;若為假,不再執行迴圈體,迴圈結束。迴圈結束後,繼續執行迴圈結構之後的語句。

注意:while條件之後的冒號不能丟掉;

如果迴圈條件不成立,則迴圈體一次也不執行;

如果迴圈控制變數的改變不是向著迴圈結束條件的方向變化,或者迴圈條件是乙個結果為真的表示式,則該迴圈結構是死迴圈或無限迴圈,即迴圈結構在沒有特殊語句的控制下,迴圈會一直進行,無法結束。無限迴圈經常用於某些特定的場合,如選單設計中;

初始化語句和迭代語句可以沒有,用於特殊的場合;

迴圈體的所有語句必須對齊,且與while的位置具有相同的縮排;

若while迴圈結構的迴圈體只有一條語句,這條語句可以直接跟在while行尾的冒號之後,即寫在同一行上。

迴圈結構的設計其實就是迴圈次數的確定。對於while迴圈結構設計,只要掌握了如下「三要素原則」,就可以設計出迴圈結構。

初始化語句:迴圈控制變數賦初值,或迴圈中用到的其他變數的初始化;

迴圈條件:迴圈結構繼續執行的條件,是乙個結果為true或false的表示式;

迭代語句:通常是迴圈控制變數的改變,且朝著迴圈結束條件的方向變化,使得迴圈可以正常結束。

例如,判斷乙個整數n是否是素數,需要判斷2~n-1之間的數與n是否有整除關係。假定i為迴圈控制變數,則迴圈的3個要素設計如下:

i=2i<=n-1

i=i+1

迴圈的三個要素確定以後,只要把這3個要素放在迴圈語句中合適的位置,再新增要重複執行的語句(迴圈體),便構成乙個可執行的迴圈結構。

一般情況下,使用while迴圈結構就可以完成任務,但是有些時候選擇for迴圈結構更加有效。比如,要為乙個集合(序列和其他可迭代物件)的每個元素都執行乙個相同的**塊,使用for語句更有效。

for語句的基本形式為:

for 《變數》 in 《序列》:

迴圈體語句塊

其中,序列可以是等差數列、字串、列表、元組或者是乙個檔案物件。在執行過程中,變數一次被賦值為序列中的每乙個值,然後執行縮排塊中的迴圈語句。序列中的所有元素全部掃瞄完畢,迴圈結束。

注意:迴圈體中的每條語句都縮排至相同的縮排級別,表示迴圈體的開始位置和結束位置;

與其他語言的for迴圈不同,迴圈結構的控制被打包成序列方式,實際上仍然暗含迴圈結構設計的三要素。其中,序列中第乙個元素的賦值相當於迴圈控制變數賦初值;每次迴圈結束後,選取列表中的下乙個元素,相當於迴圈控制變數的迭代;只要序列中還有元素就執行迴圈體,相當於迴圈繼續執行的條件;

序列可以是後面要講的資料結構物件,也可以通過range來產生乙個連續的數字列表。range不是乙個真正的函式,它是一種資料型別,代表不可操作的連續數字;

for語句末尾要加冒號;

在python命令列互動方式使用迴圈語句時,需要在迴圈結構中的最後一條語句之後按兩次enter鍵,目的是提示互動式命令程式迴圈結構已經結束,可以開始執行了。但是在文字編輯器中不需要這個額外的按enter鍵的操作;

序列中的物件也可以由使用者羅列,而不是由range函式生成,如[1,2,3,4,5]或者['string1','string2',...'stringn'],每個資料之間用逗號分隔;

列表中的元素不需要按順序排列。

range的用法如下:

range([start,]stop[,step])

引數說明:start為可選引數,起始數;stop為終止數;step為可選引數,步長。

功能:如果range只有乙個引數x,則產生乙個包含0~x-1的整數序列。例如range(6)將產生序列0、1、2、3、4、5。

功能:從start開始,產生一系列整數start,start+1,start+2,……,stop-1。該序列的步長為1。要求start和stop是整數,且start功能:從start開始產生整數序列start,start+step,start+step*2,……,start+step*r。其中,最後乙個資料小於stop,即滿足公式start+step*rrange(stop)

range(start,stop)

range(start,stop,step)

當需要中途從迴圈結構退出時,在python中使用break語句。

語法格式:

break

功能:從迴圈體當前位置退出。在迴圈結構中執行到該語句時,迴圈馬上退出並終止。通常break語句出在在if語句中,即通過某種條件判斷來決定是否退出迴圈結構。

還有一種情況是跳過迴圈體中未執行的語句,返回到迴圈體的頭部繼續執行新一輪迴圈。在python中可以使用continue語句。

語法格式:

continue

功能:結束當前迴圈,開始新一輪迴圈。即當前迴圈中的剩餘語句不再執行,程式跳轉到迴圈的頭部重新開始下一輪迴圈。通常continue語句也出現在if語句中,即通過某種條件判斷來決定是否退出當前迴圈。

python支援在迴圈語句中關聯else語句。如果else語句和for迴圈語句一起使用,else塊只在for迴圈正常終止時執行(而不是遇到break語句)。如果else語句用在while迴圈中,當條件變為false時,執行else語句。

使用else語句的迴圈結構如下所示: 

[初始化語句]

while (迴圈條件):

語句塊[迭代語句]

else:

語句塊for 《變數》 in 《序列》:

迴圈體語句塊

else:

語句塊while迴圈語法

for迴圈語法

注意:else中的語句會在迴圈正常執行完後執行;

當for迴圈或while迴圈中的語句通過break跳出而中斷時,不會執行else語句;

for-else結構或while-else結構一般要和break語句一起使用,才能體現其強大之處;

在迴圈結構中使用else之後,有些程式不必使用標記變數了,並且跳出迴圈後也不需要額外的判斷結構,程式結構簡化很多。

輸出100~200之間的所有素數的程式如下:

import math

count=0

for num in range(100,201):

for i in range(2,int(math.sqrt(num))):

if num%i==0:

break

else:

if(count%5==0 and count!=0):

print()

print(num,end=';')

count+=1

執行結果如下:

e:\pycharmprojects\pythontest\venv\scripts\python.exe e:/pycharmprojects/pythontest/ssss.py

101;103;107;109;113;

121;127;131;137;139;

143;149;151;157;163;

167;169;173;179;181;

191;193;197;199;

process finished with exit code 0

迴圈結構的迴圈體內可以包含任意python語句,因此也可以包含另外的迴圈結構。其中,最外層的迴圈稱為外迴圈,包含的迴圈稱為內迴圈。內迴圈必須完全包含在外迴圈中。並且外迴圈和內迴圈的控制變數不能相同。在巢狀迴圈結構中,巢狀的層數可以是任意的。

除了遍歷數字序列中的數字外,也可以使用for迴圈來處理單個的字串或字串列表。對於字串列表,迴圈結構依次遍歷字串列表中的每乙個字串,直到最後乙個字串經過遍歷且執行完迴圈體,迴圈結構結束。for語法中的《變數》的型別是字串。

遍歷字串列表的for迴圈如下:

for 《變數》 in ['string1','string2',……,'stringn']:

迴圈體語句塊

[else:

語句塊] 

對於單獨的乙個字串,在《序列》中可以是乙個只加引號的任意字串。迴圈結構執行時,從第乙個字元開始,針對字串中的每乙個字元執行一次迴圈體。迴圈執行的次數就是字串的長度。

遍歷字串的for迴圈如下:

for 《變數》 in 字串:

迴圈體語句塊

[else:

語句塊] 

輸入乙個字串,然後逆序輸出的程式為:

str=input("請輸入乙個字串:")

re=''

for ch in str:

re=ch+re;

print(re)

執行結果為:

e:\pycharmprojects\pythontest\venv\scripts\python.exe e:/pycharmprojects/pythontest/ssss.py

請輸入乙個字串:str

rtsprocess finished with exit code 0

這裡把這個例子寫上去不是說這個題目很難,而是我覺得這個思路很好,很巧妙。

在迴圈結構中,for語句或while語句之後必須緊跟至少包含一條語句的縮排語句塊,有些情況下需要乙個沒有迴圈體語句塊的迴圈結構,此時可以使用pass語句。pass語句是乙個「什麼也不做」的佔位符語句,例如:

for m in [1,2,3,4,5]:

pass

Python 入門之控制結構 迴圈結構(四)

r星校長 第4關 迭代器 迭代器用來迴圈訪問一系列元素,它不僅可以迭代序列,也可以迭代不是序列但是表現出序列行為的物件。本關的任務是讓學習者理解與學會使用迭代器。迭代器的優點 迭代器訪問與for迴圈訪問非常相似,但是也有不同之處。對於支援隨機訪問的資料結構如元組和列表,迭代器並無優勢。因為迭代器在訪...

python迴圈結構之for迴圈

在python中,for迴圈是應用非常廣的迴圈語句,遍歷字典 遍歷列表等等.for語句結構 for 遍歷 in 序列 執行語句 遍歷字典 lipsticks for lipstick in lipsticks print lipsticks lipstick 列印結果 香奈兒 迪奧聖羅蘭 紀梵希阿尼...

Python之迴圈結構

1.while count 0 while count 5 print hello world count 1 count count 1 2.for for i in range 5 print i else print 結束執行.range end 0 end 1 range start,end...