I. Boolean(布林值)
布林值其實就是電腦科學中的邏輯判斷資料型態,其型態共有兩種True
與 False
,分別代表正確 與錯誤
Python的布林值中,數字0
、空(empty) 或 錯誤 代表 False
, 其餘元素 皆代表True
注意! 字串bool("0")
為 True
,與數字bool(0)
結果不同
Copy trash_talk = "在非洲,每六十秒,就有一分鐘過去"
my_age = 18
print ( bool (trash_talk)) # True
print ( bool (my_age)) # True
print ( bool ( 1 )) # True
Copy print ( bool ( False )) # False
print ( bool ( None )) # False
print ( bool ( 0 )) # False
II. 比較運算
資訊科學中通常有6種比較關係:
注意! 比較後的結果型態為boolean
Copy num1 = 12
num2 = 10
print ( bool (num1 >= num2)) # True
print ( bool (num1 != (num2 + 2 ))) # False
因為比較後的結果一定為boolean值,因此可不必使用 bool()
來轉換型態
Copy num1 = 12
num2 = 10
print (num1 >= num2) # True
print (num1 != (num2 + 2 )) # False
III. 邏輯運算符號
邏輯運算符號可以將兩個以上的判斷式連接起來
A. 且
B. 或
Copy # 嘗試執行下方程式碼
n = 30
print (n > 50 and n < 100 )
# 邏輯運算符號能夠串接多個
print (n < 0 or n > 50 or n == 30 )
IV. if
else
條件判斷
A. if
如果
if
判斷式後面所接的條件判斷會被自動轉為布林值,如果判斷的結果為True
,才得以執行if
內的程式碼
Copy your_age = 77
if your_age >= 70 :
print ( "人生七十古來稀!" ) # 條件成立才能執行這行程式
注意! Python 程式碼的 縮排 相當重要,縮排的那幾行程式碼都屬於if
區塊 裡的程式碼。若判斷結果為False
,則不執行區塊裡頭的程式碼;反之,若判斷結果為True
,則執行之
注意! 程式中的縮排請按Tab
鍵
Copy # 嘗試執行下方的程式碼並觀察結果
if 1 :
print ( "第一個結果!" )
if 0 :
print ( "第二個結果!" )
Copy # 嘗試執行下方的程式碼並觀察結果
if False :
print ( "第一個結果!" )
if True :
print ( "第二個結果!" )
Copy # 嘗試執行下方的程式碼並觀察結果
if 1 != 1 :
print ( "第一個結果!" )
if 2 >= - 1 :
print ( "第二個結果!" )
Copy # 嘗試執行下方的程式碼並觀察結果
if 1 != 1 and 1 :
print ( "第一個結果!" )
if 2 >= - 1 or [] :
print ( "第二個結果!" )
B. else
否則
else
區塊執行的時機就是其所對應的if
判斷條件為False
時,所以它一定接在某個if
後面
Copy # 嘗試執行下方的程式碼並觀察結果
if 2 > 3 :
print ( '百年難得一見的數學天才' )
else :
print ( "這樣才對嘛~" )
請記得if
的區塊和else
的區塊之間絕不能放任何程式(除了無意義的空行或空白以外)
Copy # 嘗試執行下方的程式碼並觀察結果
if 2 > 3 :
print ( '百年難得一見的數學奇才' )
print ( '來調皮一下' )
else : # SyntaxError: invalid syntax
print ( "這樣才對嘛~" )
高手的寫法
Copy print ( "超過100分" ) if 2 > 3 else print ( "錯誤" )
else
只會與最接近自己的該個 if
配對
Copy # 嘗試執行下方的程式碼並觀察結果
if 1 > 0 :
print ( 'king of the math' )
if 2 > 3 :
print ( '百年難得一見的數學奇才' )
else :
print ( "這樣才對嘛~" )
C. Python常見的錯誤縮排【重要】
Python對程式碼的格式要求相當高,無故縮排或縮排數量不當都會影響結果的正確性
Copy # IndentationError: expected an indented block
if 2 > 3 :
print ( '百年難得一見的數學奇才' ) # if內容未縮排
Copy # SyntaxError: invalid character in identifier
if 2 > 3 : # 任何程式碼前無故空格
print ( '百年難得一見的數學奇才' )
Copy # SyntaxError: invalid character in identifier
if 2 > 3 :
print ( '百年難得一見的數學奇才' ) # 縮排使用空白鍵而非Tab鍵
D. 邏輯及運算符號優先順序【補充】
以下順序由高至低
in
not in
is
is not
>
<
>=
<=
!=
==
V. 多個相互獨立的條件判斷
各條件判斷間沒有關聯性(且可能同時滿足多個條件 )
利用多個平行的 if
來表示各式獨立的情況
【例題】
籃球是個相當考驗身高的運動項目,雖然偶爾有些情況可以用某些方式來彌補身高的不足,但大部分情況都還是由身高決定可勝任地的攻擊及防守位置。
假設身高190公分以上可以打後衛;身高200公分以上可以打前鋒;身高210公分以上可以打中鋒
輸入說明
輸入身高
輸出說明
輸出可以勝任的球場位置
Copy height = int ( input ( "請輸入您的身高:" ))
if height >= 190
print ( "可以打後衛" )
if height >= 200 :
print ( "可以打鋒衛" )
if height >= 210 :
print ( "可以打中鋒" )
VI. 多層次的條件判斷
一個條件判斷完後還有更深一層的判斷
在某條件成立之後,才去判斷下一個條件是否成立,即 if
裡面還有 if
注意! 縮排別忘了唷!
【例題】
小智準備去探險了,大木博士準備了兩隻相當有潛力的神奇寶貝(妙蛙種子/傑尼龜)給小智做選擇,但不能說:我全都要。請設計出一款這樣的RPG遊戲對話情境吧!
Copy pokemon = input ( '請問你要選擇哪隻精靈?(妙蛙種子/傑尼龜)' )
if pokemon == '妙蛙種子' :
if 'Y' == input ( '請問你想要進化成妙蛙花嗎?(Y/N)' ):
print ( '種子種子' )
else :
print ( '草泥草尼' )
else :
if 'Y' == input ( '請問你想要進化成水箭龜嗎?(Y/N)' ):
print ( '傑尼杰尼' )
else :
print ( '哭啊不給進化' )
VII. 多個條件判斷,只符合其中一種
【例題1】
目前有許多對於不同的血型的都市傳說,嘗試做個血型都市傳說器
輸入說明
輸入血型
輸出說明
輸出都市傳說
Copy blood_type = input ( '請輸入您的血型:' )
if blood_type == 'O' or blood_type == 'o' :
print ( '據說這種血型的人都很幽默' )
if blood_type == 'A' or blood_type == 'a' :
print ( '據說這種血型的人都很聰明' )
if blood_type == 'B' or blood_type == 'b' :
print ( '據說這種血型的人都很勤勞' )
if blood_type == 'AB' or blood_type == 'ab' :
print ( '據說這種血型的人都很有錢' )
if blood_type == 'RH' or blood_type == 'Rh' or blood_type == 'rh' :
print ( '據說這種血型的人都很穩重' )
上面範例利用許多if
達成題目的要求,但每個if
都要做判斷會拖慢程式執行速度。既然所有情況都是互斥的,也就是不可能同時發生兩種狀況(例如:同時是O型又是A型),因此
其實我們可以有更好的寫法提升程式執行的效率:elif
elif
只要前面任一列程式條件成立,後面的就不會再判斷了,能省下許多時間(下方為修改後的程式碼)
Copy blood_type = input ( '請輸入您的血型:' )
if blood_type == 'O' or blood_type == 'o' :
print ( '據說這種血型的人都很幽默' )
elif blood_type == 'A' or blood_type == 'a' :
print ( '據說這種血型的人都很聰明' )
elif blood_type == 'B' or blood_type == 'b' :
print ( '據說這種血型的人都很勤勞' )
elif blood_type == 'AB' or blood_type == 'ab' :
print ( '據說這種血型的人都很有錢' )
elif blood_type == 'RH' or blood_type == 'Rh' or blood_type == 'rh' :
print ( '據說這種血型的人都很穩重' )
【例題2】
每學期期末都是大學生神經最緊繃的時段
因為這段時間會決定自己所修的科目是否有及格
否則明年就準備當學弟了
輸入說明
輸入期末考的分數
輸出說明
輸出分數的等級
Copy num = int ( input ( '請輸入您的分數:' ))
if num >= 90 :
print ( "A" )
elif num < 90 and num >= 80 :
print ( "B" )
elif num < 80 and num >= 70 :
print ( "C" )
elif num < 70 and num >= 60 :
print ( "D" )
else :
print ( "考試不努力明年當學弟" )
注意! 很多其他程式語言無法接受40 <= num <60
的寫法,必須拆開成40 <= num and num <60
這種寫法
VIII. 學習單
Last updated 6 months ago