2016-11-10 65 views
0

我對python編程相當陌生,最近遇到了這個問題。「或」與Python中的按位運算符之間的區別

while(True): 
panelType = input("Enter the type of panel[a, b, c, d]: ") 
if(panelType.lower() != "a" 
    | panelType.lower() != "b" 
    | panelType.lower() != "c" 
    | panelType.lower() != "d"): 
    logger.error("Not a valid input. Try Again") 
else: 
    break 

當我使用位運算符我得到這個錯誤:unsupported operand type(s) for |: 'str' and 'str'。但是,一旦我將其更改爲OR運營商,它運行良好。

任何人都可以解釋爲什麼發生這種情況?

感謝

+1

使用'如果panelType.lower()未在集合([ '一', 'B', 'C', 'd'])'。 – SparkAndShine

回答

4

!=具有優先級低於|所以它試圖計算"a" | panelType.lower()這是沒有意義的。

|是運營商意味着數字,類似*+,因此是很有意義你會做比較,如>!=之前計算。在這種情況下,您想要or,它的優先級更低。

更好的是:

if panelType.lower() in ('a', 'b', 'c', 'd'): 
+0

酷!謝謝您的幫助。我試圖在其他帖子中找到答案,但我只是不知道要搜索什麼 – djskj189

相關問題