Python循環中的else

Python循環中的else語句


絕大部分編程語言中都有條件判斷語句,比如 if … else ,在大部語言中,else 一般只在條件判斷語句中出現,與 if 語句配套出現,不過在 Python 中,else 除了能與 if 這樣的條件判斷一起出現外,還能出現在 for、while 這樣的循環語句中。

我們來看一個例子:

1
2
3
4
5
6
7
8
9
10
s =["a111", "b222", "c333", "d444", "e555"]
found =False
forc ins:
ifc.startswith("c"):
found =True
printu"發現以字母c開頭的項"
break
ifnotfound:
printu"沒有發現以字母c開頭的項"

做一次循環,如果發現滿足條件的字母則打印出提示信息,循環完了還沒有發現則打印出另一條信息。我們需要設置一個額外的變量來記錄是否找到了目標字符(程序中的 found 變量),在循環完成之後再做一個 if 判斷。

上面的寫法當然是可以的,不過如果我們使用循環中的 else 語句的話,代碼會更簡潔清晰。比如:

1
2
3
4
5
6
7
s =["a111", "b222", "c333", "d444", "e555"]
forc ins:
ifc.startswith("c"):
printu"發現以字母c開頭的項"
break
else:
printu"沒有發現以字母c開頭的項"

在這兒,記錄是否找到的額外的變量不需要了,也不再需要在循環完成後再進行 if 判斷,但達到的效果和第一段代碼是一樣的。

在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區別,else 中的語句會在循環正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。

http://oldj.net/article/python-loop-else/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章