1. 程式人生 > 其它 >第三章-6-迴圈結構(while迴圈)

第三章-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迴圈,從而陷入到死迴圈中