首頁>技術>

我們透過一個小例子來看一下for的用法。假定有一個小公司,我們想計算一下全公司有多少個員工姓"張"。原始碼如下:

執行結果如下:

僱員列表employee_list是公司所有員工的姓名;family_name是指要搜尋的姓,比如我們這個例子中,是要搜尋全公司所有姓"張"的員工;employee_num是一個計數器,代表有多少個姓"張"的員工;

這個for迴圈將迭代整個employee_list,要特別注意一下本行的最後要以冒號結尾,for迴圈的語句塊都要進行縮排,透過縮排對齊確定哪些語句是迴圈要執行的語句。這一點是和C/C++語言完全不同的,大家要注意。我們看到在這個例項中,如果找到一個姓"張"的同事,就會給計數器employ_num加1。

這裡有一個小技術點就是find函式,在這裡我們透過find函式在一個字串(employee_name)中查詢一個子串(family_name),如果能夠找到,則返回子串的位置數值,如果找不到,則返回-1,所以當返回值不等於-1時,我們給計數器employee_num加1

當迴圈結束後,我們透過計數器(employee_num)來判斷一下是否找到了這樣的人,如果找到了,則employee_num一定不會再是初始值0,所以我們根據判斷結果是否為0,將對應的結果顯示在控制檯上,反饋給使用者。

透過這個例子,我們看到了for迴圈的基本用法,下面我們再增加一些技術要點。這次我們在僱員列表employee_list中,查詢一下有沒有叫"張2"的員工。

在這個例項中,如果找到了這名員工,程式將使用break語句跳出迴圈,而不需要從頭到尾迭代完。如果從頭到尾迭代完也沒有找到的話,則會執行else子句,這裡的else子句從縮排上可以看出,是與for語句對齊的,所以它是與for配對使用的,而不是與if配對使用的。我們這個程式的執行效果如下,說明"張2"是找到了。

break語句的含義是當程式執行此語句時,將跳出當前迴圈,開始執行整個迴圈之後的語句。與之相對應的是continue語句,其含義是當程式執行此語句時,將跳出此語句之後迴圈體中要執行的語句,同時繼續迭代下一個變數,繼續迴圈。

說起來比較抽象,我們看一個關於continue的例項吧,還是上面的這個小公司,現在要統計一下姓王的同事的人數,上面的例子我們統計的是姓張的同事,姓張的人太少了,效果不好,這回咱們統計姓王的。可是現在有一個小問題,有一個叫"王4"的大哥,他這周正在辦理退休手續,所以咱們統計的時候,就要把他剔除出去,不要計算他了。那麼程式如下:

在這個例項中,我們增加了一個判斷,如果僱員姓名employee_name是"王4",則continue,這樣迴圈就不會再執行下面的加1的語句,並且再次返回迴圈體的開頭,開始下一次迴圈,它並沒有像break一樣跳出迴圈體。所以最後的執行結果就是7個姓王的同事,只計算了6個。

透過上面的3個例項,我們講解了一下for迴圈,break,continue語句和else子句的使用。大家可以自已嘗試著把程式寫一遍,感受一下這些技術要點。

16
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • JAVA技術分享:單號的生成