絕大部分編程語言中都有條件判斷語句,比如 if … else ,在大部語言中,else 一般只在條件判斷語句中出現,與 if 語句配套出現,不過在 Python 中,else 除了能與 if 這樣的條件判斷一起出現外,還能出現在 for、while 這樣的循環語句中。
我們來看一個例子:
s = ["a111", "b222", "c333", "d444", "e555"]
found = False
for c in s:
if c.startswith("c"):
found = True
print u"發現以字母c開頭的項"
break
if not found:
print u"沒有發現以字母c開頭的項"
做一次循環,如果發現滿足條件的字母則打印出提示信息,循環完了還沒有發現則打印出另一條信息。我們需要設置一個額外的變量來記錄是否找到了目標字符(程序中的 found 變量),在循環完成之後再做一個 if 判斷。
上面的寫法當然是可以的,不過如果我們使用循環中的 else 語句的話,代碼會更簡潔清晰。比如:
s = ["a111", "b222", "c333", "d444", "e555"]
for c in s:
if c.startswith("c"):
print u"發現以字母c開頭的項"
break
else:
print u"沒有發現以字母c開頭的項"
在這兒,記錄是否找到的額外的變量不需要了,也不再需要在循環完成後再進行 if 判斷,但達到的效果和第一段代碼是一樣的。
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區別,else 中的語句會在循環正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。