Python 基礎教學

1. Python 環境設定 2. Python 基本變數 3. Python 流程控制 4. Python 模組與套件概念 5. Pandas 資料處理 6. Matplotlib 繪圖 7. Jieba 切詞
課程介紹 & 程式碼

判斷式If

在各種程式語言中都可以看到if else的身影。if是用來設定各種判斷的條件,用來決定接下來要執行什麼樣的指令。而在python 中if 判斷式的呈現方式如下所示:

if 判斷條件1:
    執行指令A
elif 判斷條件2:
    執行指令B
else:
    執行指令C

1. 布林Boolean格式

1. 數字比大小

1. 大於小於

布林(Boolean)格式只會產出「True」、「False」兩種結果,顧名思義就是「對」或「錯」,沒有中間地帶。以數學來做舉例,我們在python中輸入2 > 1:

2 > 1

以上的指令會產出以下的結果:

True

我們都學過數學的概念,知道2是大於1的,因此將此指令輸入則python就會告訴我們「對」。

2. 等於

那如果我要檢查「1有沒有等於1」,在python中則是這樣寫: 

1 == 1

以上的指令會產出以下的結果:

True

「==」是用來比較左有兩邊有沒有相等。千萬別輸入「=」,一個等號是「賦予變數值的意思」,如a=1,就是代表宣告a變數的內容是1。

3. 不等於

「1有沒有不等於2」呢?我們以往的知識告訴我們當然不等於,那如在python中則是這樣寫: 

1 != 2

以上的指令會產出以下的結果:

False

由此可知不等於需要使用「!=」這個符號。

4. 1是否大於1?

1是否大於1呢?這個問題可能讓您猶豫了,那我們就讓python告訴我們答案:

1 > 1

以上的指令會產出以下的結果:

False

1並沒有大於1,1也並沒有小於1,1只等於1,因此輸入1>1或1<1都會得到False的結果。

2. 邏輯運算

在許多實際情況中,判斷的條件遠比我們學習的複雜許多,譬如說「假如我考100分且班上沒有人遲到的話,我請全班喝飲料」,以上的文字敘述就有「考100分」、「班上沒有人遲到」兩個條件要同時判斷,且「班上沒有人遲到」代表「班上全班要準時」,所以還要加入否定的情況,這時候就需要用到邏輯運算子。

1. not

當我們再次回到數字的例子,在前面我們已經知道「2 > 1 」的結果為True,而當用一個not()來包覆呢:

not(2 > 1)

以上的指令會產出以下的結果:

False

使用**not()**能夠使括號內的布林結果為相反。

2. or

在座許多條件時,我們會有或者的選項,而在程式中也是一樣的,且python也非常的親民,使用「or」作為指令:

#為了方便理解,加上括號讓您更好閱讀
(2 > 1) or (2 < 1)

以上的指令會產出以下的結果:

True

我們都知道「2 > 1」的結果是True,但「2 < 1」的結果是False,「or」條件就是兩者(或者多者)只要有一個符合條件,就會為True。

3. and

若依照上面的範例,我們把「or」給改成「and」呢:

#為了方便理解,加上括號讓您更好閱讀
(2 > 1) and (2 < 1)

以上的指令會產出以下的結果:

False

我們都知道「2 > 1」的結果是True,但「2 < 1」的結果是False,「and」條件就是兩者(或者多者)都必須符合條件,才會為True,因此回傳結果為False。

3. in:字串檢查

Python是用來分析文章的好工具,在分析文章時,我們時常要查看某個字詞有沒有在文章內,這時也可以用到布林的概念。

'台積電' in '由於本次國際間的晶片短缺,導致於護國神山的台積電(2330),股價一路升突破600大關,外資揚言喊到破千'

# 也可以寫成一下這樣
thestr = '由於本次國際間的晶片短缺,導致於護國神山的台積電(2330),股價一路升突破600大關,外資揚言喊到破千'
'台積電' in thestr

以上的指令會產出以下的結果:

True

4. in:陣列檢查

與上方同樣的案例,只是將字串分段放到陣列當中,您可以先想想看,兩者所下的Python指令,與結果的關係:

'台積電' in ['由於本次國際間的晶片短缺', '導致於護國神山的台積電(2330)', '股價一路升突破600大關', '外資揚言喊到破千']

# 也可以寫成以下這樣
thestr = ['由於本次國際間的晶片短缺', '導致於護國神山的台積電(2330)', '股價一路升突破600大關', '外資揚言喊到破千']
'台積電' in thestr

以上的指令會產出以下的結果:

False
'導致於護國神山的台積電(2330)' in ['由於本次國際間的晶片短缺', '導致於護國神山的台積電(2330)', '股價一路升突破600大關', '外資揚言喊到破千']

# 也可以寫成以下這樣
thestr = ['由於本次國際間的晶片短缺', '導致於護國神山的台積電(2330)', '股價一路升突破600大關', '外資揚言喊到破千']
'導致於護國神山的台積電(2330)' in thestr

以上的指令會產出以下的結果:

True

當In在進行陣列檢查時,他會比對的是A字串有沒有完整符合陣列內的某個字串,因此才會造成上下兩者的執行結果不同。

2. if判斷式

1. if

以上理解完了布林boolen這個資料格式後,就可以利用此格式加入if判斷式中,讓電腦幫我們篩選想要的結果,如以下範例用股價舉例,若要讓程式幫我們盯盤,檢查台積電(2330)這支股票的股價現在有沒有低於400元,可以這樣寫:

# 假設台積電股價
tsmc = 600
if tsmc < 400:
    print('現在變便宜了可以買!')

以上的指令會產出以下的結果:

#空的

2. else

上述因為現在價格還不夠低,因此沒有觸發條件,倒置程式神麼結果都沒有產出,若您想要不符合條件也提示一下的話可以改成:

# 假設台積電股價
tsmc = 600
if tsmc < 400:
    print('現在變便宜了可以買!')
else:
    print('還太貴')

以上的指令會產出以下的結果:

還太貴

3. elif

elif在使用時需要特別注意條件的順序,如以下範例所示。有時在if判斷式中會有多個條件都同時符合,但if是從上到下的執行順序,因此從上開始若有符合判斷條件,便會執行條件內指令後,直接跳出if判斷式:

# 假設台積電股價
tsmc = 600
if tsmc < 700:
    print('列為再觀察!')
elif tsmc < 650:
    print('現在變便宜了可以買!')
else:
    print('還太貴')

以上的指令會產出以下的結果:

列為再觀察!
# 假設台積電股價
tsmc = 600
if tsmc < 650:
    print('現在變便宜了可以買!')
elif tsmc < 700:
    print('列為再觀察!')
else:
    print('還太貴')

以上的指令會產出以下的結果:

現在變便宜了可以買!

4. in

那如果式檢查字串in的方式,要如何加入if裡面呢:

lamp = '藍燈' # 假設目前景氣燈號
if '藍' in lamp:
    print('現在景氣不好,先別亂買')
else:
    print('景氣好!')

以上的指令會產出以下的結果:

現在景氣不好,先別亂買

又或者是檢查list的方式。

news = ['由於本次國際間的晶片短缺', '導致於護國神山的台積電(2330)', '股價一路升突破600大關', '外資揚言喊到破千', '但有專家指出', '目前台灣的景氣燈號', '正轉向', '藍燈'] # 新聞文章
if '藍燈' in news:
    print('現在景氣不好,先別亂買')
else:
    print('景氣好!')

以上的指令會產出以下的結果:

現在景氣不好,先別亂買

如果想要檢查list的各個物件內,有沒有想要的關鍵字,要怎麼查詢呢?在迴圈for課程中會告訴您喔!

5. if多重條件

當我們在選擇商品時不可能只會考量價格一個因素而已,因此試試看將剛剛上面的因素都加入近來考量:

tsmc = 600 # 假設台積電股價
news = ['由於本次國際間的晶片短缺', '導致於護國神山的台積電(2330)', '股價一路升突破600大關', '外資揚言喊到破千', '但有專家指出', '目前台灣的景氣燈號', '正轉向', '藍燈'] # 新聞文章
if (tsmc < 400) and not('藍燈' in news):
    print('絕佳的買點!')
else:
    print('別買')

以上的指令會產出以下的結果:

別買

作者:楊超霆 行銷搬進大程式 創辦人

©2023 行銷搬進大程式 Marketing Live in Code