Skip to content

[Python] 基本教學(3) for 迴圈、if 條件判斷式

Last Updated on 2021-03-28 by Clay

再次重申這些紀錄 Python 的基礎語法是面向完全的程式語言初學者的,已有程式基礎的人可能不適合觀看如此簡單的教學。要學習更進一步的 Python 的話,可以參閱我所撰寫的其他 Python 筆記,諸如介紹各種套件的心得......等等。

今天要紀錄的是程式語言當中相當重要的 For 迴圈、 If-else 判斷式。基本上,若我們希望程式能夠一次大量地幫我們執行某些重複的步驟,使用到這兩種技術是不可避免的。


For-loop

For-loop,亦即我們一般所說的 for 迴圈,指的是可以反覆讓程式幫我們處理指令的一種『程式碼指令』的稱呼,在 Python 中執行段落為一整段的縮排。

首先我們先來看一段簡單的 Sample Code:

for n in range(10):
    print(n)

print() 指令我們在之前的教程中有提過,可以讓我們在終端機上印出我們想要的結果。

在這裡,我們可以印出 n 這個變數隨著 For 迴圈的迭代次數而增加:

0
1
2
3
4
5
6
7
8
9

這就是 Python 當中的 For 迴圈。

"n" 是我們設定要迭代的變數、"range" 是我們設定要迭代的區間,預設是從 0 開始,到 10 停止。

所以我們印出的數值便是 "0 - 9" 的每一個數


If-else

If-else,顧名思義便是『如果-其他』的意思,我們可以理解為這是我們設定在程式碼內的另一種情況判斷,如果符合 『if』 所設定的條件判斷的情況,那麼我們便執行 if 底下『縮排』過的程式碼。

如果不符合 if 的情況,可能會接著判斷是否符合接下來的『elif』條件......若一直不符合,最終會執行『else』 底下的程式碼。

當然你也可以不設定 else,讓程式在不符合條件的情況下完全不執行任何程式碼。

我們來看看實際的程式碼:

a = 3
if a == 3:
    print('good!')


Output:

good!

我們首先將變數 a 設定為 3 ,並在下方寫下條件判斷式: if a == 3:。
這行的意思是如果 a 這個變數等於 3 的話,便執行底下『縮排』過後的程式碼。

是的!Python 跟其他程式語言有個很大的不同是,如果我們要執行條件判斷式(或 for 迴圈)底下的程式碼,我們並不是像 C 語言、Java 那般使用大括號 {} 將程式碼包住,而是直接以縮排與否來進行區分!

以下我們再來看一個簡單的例子:

a = 3
if a == 3:
    print('good!')

print('Nice!')


Output:

good!
Nice!

然後,我們將程式碼修改一下,讓 a 這個變數等於 3:

a = 3
if a == 4:
    print('good!')

print('Nice!')


印出的結果就改變了。

Nice!

這是由於我們更動了變數 a 的值,導致我們所寫的 if 判斷式並不符合,便不會印出底下 "good!" 的部份。
而 "Nice!" 的部份由於沒有縮排,所以並不屬於條件判斷的部份,而是 Python 的 Interpreter (直譯器)會自然執行到的部份。

當然,除了設定一種條件去匹配外,我們也可以同時設定多種條件來判斷我們該執行哪種程式碼。

如同底下這個範例:

for n in range(1, 10):
    if n % 3 == 0:
        print(n, '被3整除')
    elif n % 3 == 1:
        print(n, '被3除後餘1')
    else:
        print(n, '被3除後餘2')


"elif" 其實便是 "else if" 的意思,如上所述,代表我們所設定第二個條件判斷式:
當不符合第一個條件判斷式後便會自動開始進行第二個條件的判斷;
如果不符合第二個條件便會自動開始進行第三個條件的判斷...... 依此類推。

"else" 則是指 『以上條件皆不符合』的情況下會執行的程式碼區塊。

我們來看看執行後印出的結果:

1 被3除後餘1
2 被3除後餘2
3 被3整除
4 被3除後餘1
5 被3除後餘2
6 被3整除
7 被3除後餘1
8 被3除後餘2
9 被3整除

是否都按照我們設定的條件印出結果了呢?

以上,關於 Python 的 for 迴圈、 if - else 的簡單講解就這樣結束了。大家不妨多試試寫寫不同的情況試試,相信我,這很有趣的!


References


Read more

Leave a Reply