3. 邏輯條件判斷
I. Boolean(布林值)
布林值其實就是電腦科學中的邏輯判斷資料型態,其型態共有兩種True 與 False ,分別代表正確與錯誤
Python的布林值中,數字
0、空(empty) 或 錯誤 代表False, 其餘元素 皆代表TruePython中,boolean縮寫為:
bool
注意! 字串
bool("0")為True,與數字bool(0)結果不同
trash_talk = "在非洲,每六十秒,就有一分鐘過去"
my_age = 18
print(bool(trash_talk)) # True
print(bool(my_age)) # True
print(bool(1)) # Trueprint(bool(False)) # False
print(bool(None)) # False
print(bool(0)) # FalseII. 比較運算
資訊科學中通常有6種比較關係:
小於
大於
小於等於
大於等於
等於
不等於
<
>
<=
>=
==
!=
注意! 比較後的結果型態為boolean
因為比較後的結果一定為boolean值,因此可不必使用 bool() 來轉換型態
III. 邏輯運算符號
邏輯運算符號可以將兩個以上的判斷式連接起來
且
或
否
and
or
not
A. 且
True
False
True
T
F
False
F
F
B. 或
True
False
True
T
T
False
T
F
IV. if else 條件判斷
if else 條件判斷A. if 如果
if 如果if判斷式後面所接的條件判斷會被自動轉為布林值,如果判斷的結果為True,才得以執行if內的程式碼
注意! Python 程式碼的 縮排 相當重要,縮排的那幾行程式碼都屬於if區塊裡的程式碼。若判斷結果為False,則不執行區塊裡頭的程式碼;反之,若判斷結果為True,則執行之
注意! 程式中的縮排請按Tab鍵
B. else 否則
else 否則else 區塊執行的時機就是其所對應的if判斷條件為False時,所以它一定接在某個if後面
請記得if的區塊和else的區塊之間絕不能放任何程式(除了無意義的空行或空白以外)
高手的寫法
else 只會與最接近自己的該個 if 配對
else 只會與最接近自己的該個 if 配對C. Python常見的錯誤縮排【重要】
Python對程式碼的格式要求相當高,無故縮排或縮排數量不當都會影響結果的正確性
D. 邏輯及運算符號優先順序【補充】
以下順序由高至低
符號
內容
**
指數
~<
補數
+ -
正數、負數
* / // %
乘、除、商、餘
+ -
加法、減法
>> <<
右移、左移
&
和(二進位)
^
XOR(二進位)
|
或(二進位)
in not in is is not
> < >= <= != ==
比較運算子
not
否
and
和
or
或
V. 多個相互獨立的條件判斷
各條件判斷間沒有關聯性(且可能同時滿足多個條件)
利用多個平行的 if 來表示各式獨立的情況
【例題】
籃球是個相當考驗身高的運動項目,雖然偶爾有些情況可以用某些方式來彌補身高的不足,但大部分情況都還是由身高決定可勝任地的攻擊及防守位置。 假設身高190公分以上可以打後衛;身高200公分以上可以打前鋒;身高210公分以上可以打中鋒
輸入說明 輸入身高 輸出說明 輸出可以勝任的球場位置
VI. 多層次的條件判斷
一個條件判斷完後還有更深一層的判斷
在某條件成立之後,才去判斷下一個條件是否成立,即 if 裡面還有 if
注意! 縮排別忘了唷!
【例題】
小智準備去探險了,大木博士準備了兩隻相當有潛力的神奇寶貝(妙蛙種子/傑尼龜)給小智做選擇,但不能說:我全都要。請設計出一款這樣的RPG遊戲對話情境吧!
VII. 多個條件判斷,只符合其中一種
【例題1】
目前有許多對於不同的血型的都市傳說,嘗試做個血型都市傳說器 輸入說明 輸入血型 輸出說明 輸出都市傳說
上面範例利用許多if達成題目的要求,但每個if都要做判斷會拖慢程式執行速度。既然所有情況都是互斥的,也就是不可能同時發生兩種狀況(例如:同時是O型又是A型),因此
其實我們可以有更好的寫法提升程式執行的效率:elif
elif 只要前面任一列程式條件成立,後面的就不會再判斷了,能省下許多時間(下方為修改後的程式碼)
【例題2】
每學期期末都是大學生神經最緊繃的時段 因為這段時間會決定自己所修的科目是否有及格 否則明年就準備當學弟了 輸入說明 輸入期末考的分數 輸出說明 輸出分數的等級
注意! 很多其他程式語言無法接受40 <= num <60的寫法,必須拆開成40 <= num and num <60這種寫法
VIII. 學習單
Last updated
Was this helpful?