條件比較 ============ 簡介 ---- 「 *條件比較* 」的結果可以是「成立」或是「失敗」,也可以叫作「正確」 或是「錯誤」。 例如,條件式 **x < 3** 的結果,假如 **x** 的值是 **3** 或是比 **3** 小, 就是正確,否則 **x < 3** 的結果就是錯誤。 在巨蟒程式語言中, *條件比較* 可以是多於一項的比較條件所決定。 它也是 **if** 這個指令最重要的部分。 **if** 由條件比較的結果來決定 下面一步的動作是什麼。 這份補充材料就是教你有關 *條件比較* 的相關事項。 條件比較 -------- 在電腦上試試下面指令的結果。(我不會告訴你答案,因為你自己去試出答案比較好。):: >>> 1 < 2 1比2小,所以比較結果成立 [答案是?] >>> 1 > 2 1不比2大,比較結果失敗 [答案是?] 你應該已經發現,你所得到的答案是「True」或是「False」。在巨蟒程式語言中, True 和 False是兩個內建的常數。(複習: True = 真實; False = 錯誤。) 當然你可以用其他的東西來代替 True 或是 False,但是為避免混淆起見, 最好還適用 True 或是 False 最清楚。 比較 ---- 大多數的條件比較是將兩樣東西來作比較。下面就是巨蟒程式語言所常用的條件比較。 ========== ======================================= a < b 假如a比b小,比較結果是True a <= b 假如a比b小,或者a等於b,比較結果是True a > b 假如a比b大,比較結果是True a >= b 假如a比b大,或者a等於b,比較結果是True a == b 假如a 等於b,比較結果是True a <> b 假如a 不等於b,比較結果是True ========== ======================================= 很明顯的,上面的比較是以a與b都是數字為準的。但是有些時候,比較其他的東西也可以。 例如,比較兩個字串是以它所含的字母順序為準。事實上,在巨蟒程式語言中,你可以 比較任何兩樣東西,但是這些比較可能一點都沒有意義,並且是很愚蠢的。 例如,巨蟒會說 3 比 “silly” 要小,對現實而言,並沒有任何意義。 當你在比較兩樣東西不相等時,你可以用 != 來取代 <>,因為這兩個比較符號, 都是巨蟒所接受的。 要特別注意的是, **==** 與 **=** 是不相同的。你要用 **=** 來指定變數的 內容(值),但是 **==** 是用來比較兩樣東西是否鄉等的符號。 結合多項比較 ------------ 你可以用 1 < x < 2,意思是「1小於x,並且x小於2」。 其他的狀態 ---------- 下面是其他比較常用的狀態。 0 等於錯誤 False 1 等於正確 True x in y 假如x等於y中間的一項元素,結果就是 True x not in y 假如x不等於y中間的任何一項元素,結果就是True 結合比較結果 ------------ 你可以將比較結果與關鍵字 **and** , **or** ,或者 **not** 結合起來。 例如, **x < 3 and y > 6** 就是將 **x < 3** 與 **y > 6** 兩個比較結果再用 **and** 結和起來, 也就是只有當兩項比較結果都是 True 時,整項結果才會是 True。 “if”指令 -------- 我們已經知道什麼是 **條件比較** ,現在我們可以將 **條件比較** 用在非常重要的 **if** 指令中,而用的方法也市非常的簡單: :: if x < 3: print ’x is less than 3. I’m setting it to 3.’ x = 3 通常你會希望在 **if** 的比較結果是正確的時候,做某些事情,當 **if** 的比較 結果是失敗時,做另一件事情。要這樣做。這時須要用 **else** 這個指令: :: if x<3: print ’x is less than 3.’ else: print ’x is not less than 3.’ 雖然比較不常見,但是有些時候你須要比較一連串的狀態,然後當比較條件為正確時, 執行在它的下面所包含的指令。 這時就須要用 **elif** ,也就是 “else if” 的意思: :: if x<3: print ’x is less than 3’ elif x<4: print ’x is not less than 3, but it’s less than 4.’ else: print "x isn’t even less than 4." 其他的條件比較 -------------- 條件比較也被用在 **while** 迴路中,請參考 :doc:`《補充教材-L》 <../Appendix_L/index>` 。