[Python入門教學] if, elif, else 是什麼?

by 龍冥
code

記錄一下這次上課的內容,供上課的夥伴或補課的夥伴做複習使用。這次上課主要是針對布林資料型態還有 if else 來做一個範例程式。

首先講一下這個範例程式大概在做的功能。它會先問使用者分數,當你輸入分數進去之後,它會顯示布林值,判斷這個分數是否大於等於60。如果大於等於60,它就會顯示及格;如果小於60,它就會顯示不及格,並 print 不及格的部分。

這邊有幾個要注意的點:
第一個是 if 和 else,當 if 和 else 出現時,它們是在 python 裡面保留的關鍵字,是專門用來做指令的。後面會用一個條件句,如 score 大於等於60,然後冒號後面的下一行是要執行的命令,如果今天我的指令要包在 if 條件句裡面,就需要在下一行的指令中縮排。比較推薦用 tab 鍵快速縮排,再透過 shift 加 tab 鍵快捷鍵減少縮排。不建議用空白鍵和刪除鍵,因為空白鍵難以判斷縮排的間隔是否正確。

#bool Boolean 布林 -> 是/否 True/False

score = int(input("分數?"))

# 先看bool result結果
# score >= 60 scroe有沒有大於等於60?

print("boolean:", score >= 60)

# 再轉成人類可讀
if score >= 60: #如果score有沒有大於等於60: 做以下的事情
  print("及格!🎉")
else: #否則: 做以下的事情
  print("不及格,要加油!💪")

#快速縮排:tab 減少縮排shift+tab
# 不要用空白鍵,你會有一堆bug要除

第二部分是防止使用者輸入空白鍵。我們用 if else 的方式來做,將使用者輸入的文字透過 if 條件句判斷是否有數值。如果有數值,if 條件句為 true;如果沒有輸入任何資訊,就會進入 else,提示使用者不要輸入空白。

在判斷完使用者有沒有輸入分數之後,再透過 int 指令將原本輸入進來的文字轉換成整數型態,再做後續的 if else 判斷。同樣地,如果 score 大於等於60 就顯示及格,否則顯示不及格。

#防止使用者輸入空白鍵
score_input = input("分數?")
if score_input: #user有無輸入分數?

  score = int(score_input) #轉成整數

  print("boolean:", score >= 60)
  if score >= 60: #如果score有沒有大於等於60: 做以下的事情
    print("及格!🎉")
  else: #否則: 做以下的事情
    print("不及格,要加油!💪")

進階版,我示範了一個 try except 寫法。這段程式碼主要用常見的 try except 寫法防止使用者輸入非預期資訊時,可以提醒使用者輸入正確數字或通知發生未知錯誤。這部分比較屬於進階內容,在這篇文章中不多贅述,只是 demo 一下這樣的程式碼可以減少看到程式 error 的機會,又能正確收到提示。

try:
  score_input = input("分數?")
  score = int(score_input) #轉成整數
  print("boolean:", score >= 60)
  if not 0 <score < 100:
    raise ValueError("請輸入0~100的數字")

  if score >= 60: #如果score有沒有大於等於60: 做以下的事情
    print("及格!🎉")
  else: #否則: 做以下的事情
    print("不及格,要加油!💪")

except ValueError as e:
  print("請輸入數字!")
  print(e)
except Exception as e:
  print("發生未知錯誤")

最後一部分加入了 elif 條件。如果第一個條件沒有達成,有第二、第三、第四個條件可以試。在 Python 裡面加 elif 指令,可以讓 if 條件句多加判斷不同條件。但要注意的是,如果前面的條件達成了,它就會直接執行那個條件並跳出,不再執行後面的條件子句。

以這邊的範例來講,如果 score 大於等於90 分,就顯示成績是 A;如果大於等於80 分,就顯示成績是 B;如果都不符合,就顯示不及格。

score = int(input("分數?"))

# 先看bool result結果
# score >= 60 scroe有沒有大於等於60?


# 再轉成人類可讀
if score >= 90: #如果score有沒有大於等於60: 做以下的事情
  print("成績是A!🎉")
elif score >= 80: #else if: 否則如果(第一個條件沒達成時,判斷這個條件)
  print("成績是B!🎉")
else: #否則: 做以下的事情
  print("不及格,要加油!💪")

記錄一下自己的心情,就像備課的碎碎念吧。其實這次上課的程式主要是用 ChatGPT 生成。因為我自己撰寫程式的深度和強度比現在入門教學高很多,所以不像大學時期教課時對 Python 理解還沒那麼多。現在講 Python 時,我會把入門、中階、進階混為一談,但實際上在程式領域中學習等級差很多。

為避免自己發生這種狀況,我和 ChatGPT 對話時請它給我合適的 code 範例,不是教我怎麼寫程式或教別人,而是給我合適範例。我拿著範例來解釋和教學,避免拉太多對入門的人來講難度過多的知識點。

線上直播加入多少知識點也是一個思考點。純線上直播不像實體課能知道學生反應和互動節奏,上課節奏慢很多。但線上上課好處是大家輕鬆,不像實體上課有壓力,即使沒有要考試也有實體課程的節奏壓力。而線上直播,我定調成啟發性教學,不一定要讓你成為專業工程師,而是開啟一道大門讓你覺得Python很有趣。

希望來上課或看直播的人都能收穫他們想要的東西,不管是 Python 還是 ChatGPT 或只是聽我講話都可以。如果覺得文章有幫助,可以分享給需要的人,也歡迎留言讓我知道你的感想,你們的留言是我寫文章最大的動力。希望我們都能帶給彼此更好的收穫,一起共好!

教學錄影的影片在這:

Related Posts

Leave a Comment