昨天講了幾個迴圈的基本應用,但漏講了一些也是蠻重要的東西,這些東西也是非常的重要的,主要就是continue, break, 和else,其實continue和break在Java或是其它語言也是存在的,但是else這東西在迴圈中還蠻特別的,一般的概念是使用在if的條件判斷句型中,不過迴圈裏的角色,就讓我來說明一下。
先來帶一個簡單的example,簡單的說,就是當我們執行到了break的時候,就會脫離當下的迴圈,而continue就會結束這個iteration,換句話說就是跳回for起始的地方,執行下一個循環。
for n in range(2, 100):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, "*", n//x)
break
else:
print(n, 'is a prime number')
這個是一個尋找2到100的數,有那些數是質數的example,也順便帶出else的應用,else是指當break為被執行時,這個迴圈在結束時,就會去執行else的程式區塊。另外,他也常拿來用在exception handle的try catch句型上,同樣的,也是當沒有catch被執行時,就會執行else,類似Java的finally的句型。
這是一個while加continue的example
n = 2
while n < 10:
if n % 2 == 0:
print(n, 'is a even number')
n+=1
continue
print(n, 'is not a event number')
n+=1
else:
print('finish while loop')
另外提一下,另一個關鍵字pass,在Python中因為語法的關系,其實是沒辮法讓你寫一個空白的條件判斷,然後不做任何事,所以我們需要寫pass,另外也可以寫應用在function和class的定義中。
if 1 == 2:
pass
else:
print('pass example')
補充一下,之前也都沒有提到這類關於條件運算在Python中的定義,比如在這裏n % 2 == 0,其實這個東西在不同語言也是有不同的寫法,雖然看的懂,不過還是做一下記錄,這將會是明天的題目XD,個人覺得位元運算子也是蠻重要的,不過,這部分應該不會特別的去再進行講解,在Kaggle解題中,目前使用到的機率不高,有需要再去查資料了。
在參考資料中,有更多好用的語法,我覺得在將來一定是有機會用到的,但我就不講太多了,各位可以直接參考這些好用的function,我直接列出關鍵字就好,像是items, reversed, sorted, zip等等。
參考資料:
Looping Techniques