第三章-6-迴圈結構(while迴圈)
對應書本p82-p83
當我們使用for迴圈時,我們很清楚迴圈的次數;比如說我們要輸出'前進'5次,編寫程式如下:
那如果現在需求變成了 計算1~n之間的整數和,當和大於6000時輸出和;
我們有起始1,但什麼時候截止卻不知道(n);當我們不知道一個迴圈需要執行的次數時,我們就可以使用while迴圈來完成
while迴圈
-while迴圈一般結構-
while迴圈在執行時,首先會判斷條件是否為真,如果條件為真,執行一次迴圈體,然後再次回到while條件判斷,如果還為真,繼續執行迴圈體;以此類推直到判斷條件為假時退出while語句
=======================================================================================================================
舉幾個例子
該程式會輸出 6;執行流程為
#賦i為0
#進入while迴圈,判斷條件i<5,成立,執行while下的迴圈體i=i+2,執行後i為2;返回while的條件判斷
#此時i為2,判斷i<5,成立,執行迴圈體,執行後i為4;返回while的條件判斷
#此時i為4,判斷i<5,成立,執行迴圈體,執行後i為6;返回while的條件判斷
#此時i為6,判斷i<5,不成立,結束while迴圈
#執行後續語句,print(i),輸出i的值為6
=======================================================================================================================
該程式會輸出0;執行流程為
#賦i初值為0
#進入while迴圈,判斷條件i<0;不成立,結束while迴圈
#執行後續語句print(i),輸出0
=======================================================================================================================
回到開頭,計算1~n之間的整數和,當和大於6000時輸出和;顯然我們只需要判斷 sum<6000就行了;成立時繼續加,不成立時就退出迴圈並輸出和,編寫程式如下:
該程式會輸出6105;執行流程為
#賦sum初值為0,i初值為1
#進入while迴圈,判斷條件sum<6000,為真,進入迴圈體,將i累加到sum上,i自加1;
#直到判斷sum<6000為假,則結束迴圈
#輸出sum,此時sum已大於6000
=======================================================================================================================
所有的for迴圈都可以用while迴圈來表述,讓我們來改寫幾個for迴圈吧
執行流程為
#range(15)生成一個從0到14間隔為1的整數序列,可以簡單的看作[0,1,2....13,14]
#依次將序列中的元素賦值給i並執行迴圈體中內容
#第一次i=1,print(i)輸出1
#第二次i=2,print(i)輸出2
......
#第n次,i=14,print(i)輸出14
#結束for迴圈
改寫成while:
while迴圈只需關注到什麼時候開始,什麼時候結束,怎麼變化;
比如我們可以建立一個變數a作為迴圈控制條件,a的初值應為0,a>14時結束迴圈,a每次變化幅度為+1,編寫程式如下
=======================================================================================================================
【思考】請將以下for迴圈改寫成while迴圈
---while迴圈
=======================================================================================================================
for迴圈還可以遍歷一個序列中的所有元素
該程式依次遍歷了列表list1中的每一個元素並輸出;那麼如何用while迴圈來實現這一功能呢?
我們可以構造這樣的結構來提取列表lit1中的元素 list1[索引];顯然,我們只要能夠生成對應的索引就能夠依次取出列表中的元素並輸出
我們知道列表的索引可以是從左到右,從0開始遞增的 ;故while迴圈的起始為0終止是len(列表)-1
固編寫程式如下
=======================================================================================================================
你發現了麼,while迴圈條件中的變數一定會在while迴圈的迴圈體裡變化,因為如果不變化的話,就不會結束while迴圈,從而陷入到死迴圈中