哈囉,大家連假過得還好嗎?我是Teresa,初學者學習筆記更新到第四集囉~EP. 3 介紹了Python中常見的資料型態以及運算子,這集要來整理的是條件語句、迴圈以及函數的概念,讓我們一起看下去吧~
條件語句
Python中的邏輯條件(比較運算子請詳見EP. 3)可以通過多種方式使用,最常見的方式是 if 語句和迴圈
# if 語句 a = 37 b = 20 if a > b: #如果此條件為真 print( “ a is greater than b. ”) #則輸出此行
# elif 意思是「如果第一個條件不正確,請判斷此條件」 a = 37 b = 37 if a > b: #如果此條件為真 print(“ b is greater than a”) #則輸出此行 elif a ==b: #如果上述條件不為真,請判斷此條件 print(“ a and b are equal”) #如果為真,則輸出此行
# else 意思是上述條件均不為真時,才執行這個條件 a = 37 b = 20 if b > a: #如果此條件為真 print(“ b is greater than a. ”) #則輸出此行 elif a == b: #如果上述條件不為真,判斷此條件 print(“ a and b are equal. ”) #如果為真,則輸出此行 else: #如果上述兩個條件不為真 print(“ a is greater than b. ") #則執行此條件
小提醒:語句後要加冒號( : ),不要遺漏了~ elif 跟 else 可以擇一存在
如果只有一個語句要執行的話,可以把語句放在和 if 語句相同的行之中
if a > b: print(“a is greater than b.”)
a = 20 b = 37 print(“A”) if a > b else print(“B”) # B
a = 37 b = 37 print(“A”) if a > b else print(“=”) if a == b else print("B”) # =
邏輯運算子(and、or)可以用來組合條件語句
a = 100 b = 200 c = 300 if a > b and c > a: print(“兩個條件都是對的")
a = 300 b = 200 c = 100 if a > b or a > c: print(“至少有一個條件是對的")
嵌套:語句中可以有其他語句
a = 37 if a > 15 print(“此數字大於15") if a > 30: print(“此數字也大於30") else: print(“但此數字沒有大於30") # 此數字大於15 # 此數字也大於30
值得注意的是: if 語句不能沒有內容,如果真的需要空著的話,可以使用 pass 語句
a = 37 b = 20 if a > b: pass
迴圈
迴圈是一段在程式中只要寫一次,但能執行很多次的程式碼。它可能會執行特定的次數,或是執行到特定條件成立時結束。
While迴圈
使用while迴圈的時候,如果條件判斷為 True ,可以重複執行一組語句
需要先設置好相關的變數且記得增加該變數,否則迴圈會不斷執行
i = 1 while i < 6: print(i) #重複執行,直到不符合條件 i += 1 #重複執行,直到不符合條件 # 1 # 2 # 3 # 4 # 5
break語句
如果想要中斷迴圈的話,可以使用 break 語句,即使 while 迴圈中的條件判斷仍為 True
i = 1 while i < 6: print(i) if i == 3: break i += 1 # 1 # 2 # 3 # 此例子表示:有個 i 變數是 1 # 當 i 小於6時,先 print 變數 i # 接著判斷 i 是否等於 3,如果等於 3,就中斷迴圈 # 即使變數 i 小於 6 仍然符合 while 迴圈的條件
continue語句
我們可以藉由 continue 語句,停止執行某條件,並接著跑迴圈
i = 0 while i < 6: i += 1 if i == 3: continue print(i) # 0 # 1 # 2 # 4 # 5 # 此例子表示:有個 i 變數是 0 # 當 i 小於6時,先將 i + 1 # 接著判斷 i 是否等於3,如果等於3,繼續跑迴圈,如果不等於3的話,則 print i 變數
else語句
迴圈中可以加入 else 語句,當 while 的條件不為真時,可以執行下一個語句塊
i = 1 while i < 6: print(i) i += 1 else: print(“ i 已經不再小於6")
for迴圈
for 迴圈可以用在可迭代的序列之中,例如:列表、元組、字典、集或字串上
animals = [ “ant”, "bird”, “cat”, "dinosaur"] for a in animals: print(a) #ant #bird #cat #dinosaur
break語句
在 for 迴圈迭代完所有項之前,我們可以使用 break 語句來中斷迴圈
animals = [ “ant”, "bird”, “cat”, "dinosaur"] for a in animals: print(a) if a == “cat”: break #ant #bird #cat
animals = [ “ant”, "bird”, “cat”, "dinosaur"] for a in animals: if a == “cat”: break print(a) #ant #bird
上述兩個程式碼的差異在:if 語句塊的擺放位置不同
第一個會先列印變數 a,再判斷變數是否為 cat;第二個則是先判斷變數 a 是否為 cat,如果不是再列印變數
continue語句
使用 continue 時就像是跳過某個迭代對象,繼續執行迴圈語句
animals = [ “ant”, "bird”, “cat”, "dinosaur"] for a in animals: if a == “cat”: continue print(a) #ant #bird #dinosaur
range函數
如果需要使用迴圈來瀏覽一組指定數量的數字,我們可以使用 range( ) 函數
( )中的範圍預設情況是從 0 開始,以 1 為增加單位,到指定數字 -1 結束
for a in range(5) print(a) #1 #2 #3 #4 #注意:不是 0~5 的值,而是 0~4 的值
剛剛說預設情況下起始值是 0 ,這也意味著可以新增參數來指定起始值
for a in range(3,8) print(a) #3 #4 #5 #6 #7
剛剛說預設情況下增加單位為 1,這也意味著可以新增參數來指定增加單位
for a in range(3, 10, 3): print(x) #3 #6 #9
else語句
在 for 迴圈結束後,可以加上 else 語句來執行其他的事情
for a in range(5): print(a) else: print(“程式到這裡結束") #1 #2 #3 #4 #程式到這裡結束
嵌套迴圈
嵌套迴圈是指迴圈內還有迴圈
animals = [ “ant”, "bird”, “cat”, "dinosaur"] color = [“red”, “yellow”, white”, green”] for x in animals: for y in color: print(x, y) #ant red #ant yellow #ant white #ant green #bird red #bird yellow #bird white #bird green #cat red #cat yellow #cat white #cat green #dinosaur red #dinosaur yellow #dinosaur white #dinosaur green
pass語句
由於迴圈中不能為空,如果真的沒有內容要放置的話,需要加入 pass 語句避免出錯
animals = [ “ant”, "bird”, “cat”, "dinosaur"] for a in animals: pass #此結果為空
函數
函數是只有在調用它的時候才會被運行,我們可以將資料(參數)傳遞到函數中,再由函數返回數據
圖片來源:圖解 Python 函數
創建函數
函數使用 def 定義,如果需要調用函數時,使用函數名稱與後括弧( )
def myFunction( ): #創建函數 print(“This is Teresa’s python note for beginner.”) myFunction( ) #調用函數
參數args
所需要的資料可以當作參數傳遞到函數中,參數會放在函式名稱後面的括弧中,如果不只一筆參數,只需要以逗號(,)分隔即可,但後續調用時,必須使用正確的參數數量調用函數,否則程式會出錯
若以函數的角度來解讀,參數同時是定義函式時括弧中所列出的變數,也是調用函數時所發送到該函數的值
def myFunction(rollcall): print(“Does” + rollcall + “here?”) myFunction(“Andy”) #Does Andy here? myFunction(“Brad”) #Does Brad here? myFunction(“Chad”) #Does Chad here? myFunction(“David”) #Does David here? myFunction(“Ethen”) #Does Ethen here?
任意參數*args
如果不知道有多少參數會被傳遞到函數中,可以在函數定義的參數名稱之前加上 *
def myFunction(*fruits): print(“My favorite fruit is” + fruits[3]) myFunction(“apple”, “cherry”, “pineapple”, “peach”) # My favorite fruit is pineapple
關鍵字參數
上方的參數都有其順序關係,但如果使用關鍵字參數,它只會辨認值與鍵的關係,與參數的順序毫無關聯
def myFunction(fruit4,fruit3, fruit1, fruit2) print( fruit3 + “is red.”) myFunction(fruit1 = “cherry”, fruit2 = ”peach”, fruit3 = “apple”, fruit4 = “pineapple”)
任意關鍵字參數**kwargs
它就像任意參數一樣,不果不知道有多少關鍵字參數會被傳遞到函數中,可以在函數定義的參數名稱之前加上 **
默認參數值
如果我們調用沒有參數的函數時,它會使用預設值
def myFunction(country = "America") print(“ He is from” +country) myFunction(“ Norway”) #He is from Norway myFunction(“ India”) #He is from India myFunction( ) #He is from America
返回return
如果要讓函數回傳值,可以使用 return 語句
def math(x) return 3 * x print(math(2)) #6 print(math(5)) #15 print(math(7)) #21
遞迴
Python接受函數遞迴,表示的是你所定義的函數可以被自己調用
這樣可以透過迴圈讓數據得以得到結果,但應該要小心避免寫入無線迴圈,或是使用過多的記憶體
對遞迴有興趣的,可以自己查閱相關資料,在此分享一個網頁,我個人覺得講解的很詳細。
EP.4到此結束囉,感謝觀看,Python的一些基本概念也差不多告一段落了,之後想和大家分享一些模組和簡單的應用~歡迎持續觀看,也歡迎給我一些方向,讓我們學習的路上有目標與動力可以持續前進!
Python初學總整理 全系列:
Python初學總整理 第3講:Python資料型態和運算子
Python初學總整理 第4講:Python條件、迴圈與函數 (本篇)
Python初學總整理 第7講:爬蟲實例解析 – 以爬取臉書社團為案例,使用 Selenium 來進行網頁模擬爬蟲
文章看完還是不知道該從哪裡下手?
就從線上課程開始吧!不讓你獨自摸索好幾個月,用8小時帶你走完基礎與精華,培養你基礎的Python概念,讓自學下一步不是煩惱!
全新Python 課程上架,8小時基礎實戰!,限時優惠只要NT 600 (HDK 120 起)!
不讓妳浪費一整天,只要你8小時,就能讓你學會基礎!
如果你的入門還在單打獨鬥,歡迎來到快樂學程式找到志同道合的夥伴,你的自學之路不孤單。
參考資料:
- https://www.w3schools.com/python/python_conditions.asp
- https://nbis.pixnet.net/blog/post/58238148
- https://june.monster/python-101-for-loop/