fbpx

哈囉,大家連假過得還好嗎?我是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的一些基本概念也差不多告一段落了,之後想和大家分享一些模組和簡單的應用~歡迎持續觀看,也歡迎給我一些方向,讓我們學習的路上有目標與動力可以持續前進!

如果想追蹤我更多文章的話,可以加入程式小白的 JS Python 學習群的社團,和我還有其他學習夥伴一起討論、交流、互動哦~我們下次見~

 

補充~想和大家分享10月底有一場舉辦的線上小聚有聊機器學習!這也是我在Python中會感興趣的主題之一,Teresa已經報名了也推薦給大家~

活動資訊:https://pse.is/vjqz8

參考資料:

  1. https://www.w3schools.com/python/python_conditions.asp
  2. https://nbis.pixnet.net/blog/post/58238148
  3. https://june.monster/python-101-for-loop/

Leave a Reply