python中 or 和 | 有什麼區別

guess = 0
secretNum = 14

for number in range(1,4):
    if guess == 0 or guess > 20 :
        print("數字必須位於1-20之間")
        continue
    if guess < secretNum:
        print("太小啦")
    elif guess > secretNum:
        print("太大啦")
    else:
        break

image.png


guess = 0
secretNum = 14

for number in range(1,4):
    if guess == 0 | guess > 20 :
        print("數字必須位於1-20之間")
        continue
    if guess < secretNum:
        print("太小啦")
    elif guess > secretNum:
        print("太大啦")
    else:
        break

image.png

爲什麼兩份代碼就唯一的 or 和 | 的不同,運行結果不一樣?我們之前應該覺得這2個符號是能代替纔對呀?

(1)如果a,b是數值變量, 則 |表示位運算

if表達式相當於:if 0 == 0 | 0 > 20  而

>>> 0 == 0 | 0 > 20
False
>>>

所以根本沒有進入if guess == 0 or guess > 20 :裏面的代碼塊去執行代碼。


(2)如果a, b是邏輯變量, 則or 和 | 用法基本一致

>>> (3>0) | (3<1)
True
>>> (3>0) or (3<1)
True
>>>

總結:爲了避免出現今天這個錯誤,請在python邏輯判斷需要或連接時候,儘量用or,不要用其他語言用的那個豎|


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章