對應書本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循環,從而陷入到死循環中