2017-09-17 51 views
-1

這是我正在研究的計算器的一部分。本節旨在比較操作整數值(第2行)。如果用戶輸入一個無效值(不是數字1-4),則下一行用於捕獲,如果是,則打印一個句子並結束程序。但是,無論輸入什麼內容,它都在打印句子並結束程序,它是否等於1-4。我的Python代碼沒有遵循一個簡單的if語句,不知道我在做什麼錯誤

def main(): 
operation = int(input("Hello, What would you like to do? (1)ADD, 2)SUBTRACT, 3)MULTIPLY, or 4)DIVIDE)")) 
if(operation != 1,2,3 or 4): 
    print("I'm sorry, but your an idiot >.>") 
    import sys 
    sys.exit() 
else: 
    pass 

P.S.第4行(你的)的語法錯誤是故意的

+2

有無你試過打印'(operation!= 1,2,3或4)'的值嗎? – Ssswift

+0

這被解析爲if((operation!= 1),2,(3 or 4)):',這將是'if((operation!= 1),2,3):'並且總是非空元組)評估真值;這可能不是你想要的。 – jonrsharpe

+0

是的,這絕對不是我想要的,所以在!=操作的情況下,我只會在將一個值與另一個值進行比較以避免這種類型的錯誤時使用它? – Marmoolak

回答

1

首先,「或」有點破壞它,即使它沒有「或」的工作。 這就像使用以下

if (x == 1) or (2): 
    print "x equals 1 or 2 exists" 

爲了更好地環繞該你的頭,嘗試執行「如果(4):」 這將始終返回true,因爲「4」的存在。如果「4」是「0」,「None」或「False」,則返回False的唯一時間。

即使刪除「或」後,它也不會按照您希望的方式工作。 因爲Python以 「1,2,3,4」 作爲一個元組

(1,2,3,4) 

所以它的檢查,如果 「操作」 等於 「(1,2,3,4)」 直接。

試試這個

if operation not in (1,2,3,4): 
    print "It's spelled you're" 
else: 
    pass 

所以現在它的檢查,如果「操作」是給定的元組。

+1

圓括號在那裏不是必需的 –

+1

'如果操作不在(1,2,3,4)'中,我會怎麼寫。元組是實習的;列表不是。 – trentcl

+0

如果操作不在(...,):#no括號請在 –

0

你想操作比較有效的值的方式是不正確的,我會建議您嘗試檢查一個列表中存在的操作價值,如果是這樣相應的處理,像這樣:

def main(): 
    operation = int(input("Hello, What would you like to do? (1)ADD, 2)SUBTRACT, 3)MULTIPLY, or 4)DIVIDE)")) 
    if operation not in [1,2,3,4]: 
     print("I'm sorry, but your an idiot >.>") 
     import sys 
     sys.exit() 
    else: 
     pass 
+0

哦,我的天啊!現在一切都像魅力一樣運作!感謝你們。 – Marmoolak

相關問題