第三章-5-循環結構(for循環)


===for循環===

對應書本p80-p82

pyton中提供了兩種循環結構的呈現方式

第一種:for循環,一般格式是

 

for <變量名> in <序列>:

  <循環體>

else:

  <語句塊>

其中else部分可省略

for <變量名> in <序列>:

  <循環體>

****注意縮進,循環體和語句塊前要有空格,注意else下的語句塊是另起一行,不要寫在else后面,注意冒號

 

截至本節,我們已經學習了兩種序列,分別是列表和字符串

 

for 變量 in 序列:】的功能是依次遍歷序列中的元素,並在每一次循環中將一個元素賦值給變量,然后執行后續的循環體內容

 

 

執行以下程序段

 

 

 解析:

進入for i循環,依次將序列【列表[1,‘n’,[5,2]]】中的元素賦值給變量i並執行循環體中的print(i)

第一次將1賦值給i,輸出i為剛賦值的1,結束本次循環后進入下一次循環,將字符串‘n’賦值給變量i,執行循環體print(i),輸出i為字符串'n',在下一次循環輸出列表[5,2],當遍歷完序列中所有元素並執行完最后一次循環體后,python跳出這一循環執行后續語句;

【輸出】

1

'n'

[5,2]

 

 

 

同理,我們也可以遍歷一個字符串

 

 

 

它也會遍歷字符串中的元素並依次執行print(i)輸出字符串中的元素,

【輸出】

'['

'1'

','

'2'

']'

 

要注意第一個序列是列表,第二個序列是字符串,請同學們分清其中的不同

列表中的元素是被包裹在中括號中的,被逗號隔開的一個個符號

字符串中的每一個符號都是一個元素(引號不是,引號用來標識字符串)

 

 

 

【例題】:請寫出程序12依次輸出的內容

 

 

答案

#1

【輸出】

1

3

'a'

'b'

 

#2

【輸出】

'1'

'2'

'b'

'c'

 

===for-else===

 

我們在之前接觸了分支結構 if-else和if-elif-else;我們知道,分支結構中一旦執行了if中的語句,就不會再執行else中的語句

for-else語句中的else是這樣執行的:在遍歷完序列中的元素后,結束for循環並執行else語句中的內容,也就是說只要正常執行完for循環,必定執行else語句中的內容,例子如下

 

 

 

【輸出】

'1'

'2'

'3'

'4'

'jjj'

練習三:請用for-else的知識內容寫出如下程序的輸出內容依次是?

 

 

 

 

 

答案

【輸出】

1

2

'8ga'

 

===break===

我們上面說到只要正常執行完for循環,必定執行else語句中的內容,那么什么叫不正常執行完?

 

在循環結構中有break子句,該語句的功能是:執行到break后,跳出當前循環並結束該循環結構;執行break后,不執行else部分的語句塊

 

 

 

 

【輸出】

1

2

3

'123'

解析:

首先進入for i 循環,將1賦值給i,進入循環體執行print(i)輸出整型1if判斷 1==3,為假不執行分支結構下屬語句塊,循環體中所有語句執行完,進入下一循環

將序列中的第二個元素2賦值給變量i,進入循環體執行print(i)輸出整型2if判斷 2==3,為假不執行分支結構下屬語句塊,循環體中所有語句被執行完,進入下一循環

將序列中的第三個元素3賦值給變量i,進入循環體執行print(i)輸出整型3;判斷3==3,為真執行分支結構下屬語句塊break,跳出當前循環,直接執行for-else語句后續的語句

執行print('123')輸出字符串'123'

 

我們修改下程序;先執行分支結構;再執行print函數

 

 

 

【輸出】

1

2

'123'

它先判斷再輸出,所以前面的輸出是一樣的12

然后進入第三次for循環,將3賦值給i,判斷3==3,為真執行循環體中break語句,直接跳出循環,執行后續語句輸出字符串‘123’

 

 

練習四:請用for-else和break語句的知識解答下列程序的輸出結果

 

 

 

 

【輸出】

2

3

'a'

'123'

 

解析:

進入for i循環

第一次,i為2;判斷if 2 == 3;為假;執行else語句下語句塊;print(2)輸出2;執行后續語句print(i+1)輸出3

第二次,i為3;判斷if 3 == 3;為真;執行if下語句塊,print('a')輸出字符串'a';執行break,跳出當前循環不執行for-elseelse;

print('123')輸出字符串'123'

 

 

循環的嵌套以及嵌套中的break使用,例題如下:

 

 

 

 

【輸出】

'x1'

'y1'

'y2'

'y3'

'x2'

'y1'

'y2'

'y3'

 

解析:

這個程序首先進入for x循環,將'x1'賦值給x然后進入循環體執行print(x)輸出x為'x1';

然后進入for y循環依次輸出'y1','y2','y3'

然后結束for y循環,結束for x循環體【注意循環和循環體的區別】,

進入for x的下一個循環,輸出'x2'

進入for y循環依次輸出'y1','y2','y3';然后結束for y循環,結束for x循環

 

 

練習五: 說出下面程序的輸出

 

 

 

 

【輸出】

1

'4'

'5'

2

'4'

'5'

 

練習六:

 

 

 

【輸出】

1

'4'

2

'4'

3

'4'

 

練習七: 

 

 

 

【輸出】

1

'4'

2

'4'

 

 

 

 

 

===range函數的使用===

range(開始【默認為0】,結束,步長【默認為1】)牢記顧頭不顧尾!!!!

range函數能夠返回一個從開始到結束的,間隔為步長的,顧頭不顧尾的整數序列

是不是和字符串,列表的切片操作很像?列表名[開始索引:結束索引:步長]注意切片是中括號+冒號;range函數是小括號+逗號

*range(10)等價於range(0,10)等價於range(0,10,1)因為開始和步長是有默認值的。

作為一個‘序列’,當然能夠使用for…in來遍歷了!

 

 

 

【輸出】

0

1

2

 

 

 

 

【輸出】

2

5

8

解析:

先寫好開始和結束   2………10;已步長為間隔填補開始到結束之間的空隙,即 2__5__8__10,顧頭不顧尾,能夠生成的整數序列是2,5,8;10不取

 

練習八:以下依次輸出什么?

 

 

 

【輸出】

0

2

4

6

8

 

練習九:依次輸出什么?

 

 

 

【輸出】

10

7

4

1

-2

解析:

先寫下開頭和結尾

10….-4

以步長為間隔填滿間隙

10…7…4…1…-2…-4

顧頭不顧尾,舍去-4

固依次輸出10,7,4,1,-2

 

 

利用range函數和for循環我們可以做很多事情,如計算1+2+3…+99+100的值

 

 

 

 

解析:

賦值sum為0

for i in range(1,101)生成一個從1-100間隔為1的整數序列並依次賦值給I

第一次 i為1sum = 0+1

第二次 i為2sum = 0+1+2

…..

n次 i為n,sum = 0+1+2….+(n-1)+n

 


免責聲明!

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



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