2015-09-01 19 views
0

用於考慮用戶輸入大寫或小寫的答案。不管我輸入什麼,它都不起作用,因爲第一條語句被接受爲真。也許我對布爾的思想不夠了解,但對於第一個陳述,如果我不輸入「B」或「b」,那麼這將是錯誤的,導致下一個陳述被評估;或者我想。有人可以解釋我發生了什麼問題嗎?Python:使用布爾語(如果語句和原始輸入)

next = raw_input("Enter A, B, C or D: ") 

if next == "B" or "b": 
    print "Correct!" 

elif next == "D" or "d": 
    print "Fair enough, Ill give you this one." 

elif next == "C" or "A": 
    print "Incorrect" 
    exit(0) 

else: 
    print "WRONG. START AGAIN" 
    exit(0) 

回答

1

您對布爾邏輯的工作原理缺乏基礎知識。我推薦一本書或更多的在線閱讀。

if next == "B" or "b": 

應該

if (next == "B") or (next == "b"): 

如果你在你的代碼中的每個變量代替字母變量,你得到的是:A == B or C,並計算結果爲真總是因爲你的情況,C是以上只是一個數字0,Python認爲它是「真理」。

+0

我寧願使用'next.lower()=='b''或upper()版本,我也不想使用'next'作爲變量名稱,因爲它會影響內置函數'next' 。 –

+0

是的,我正在這樣做,這是它的一部分。感謝您的知識! – staredecisis

+1

我會特別推薦在線查找一個好的Python教程並閱讀邏輯部分。每種語言處理布爾邏輯的方式略有不同(什麼稱爲「真」和「假」,什麼是返回等),因此它將有助於查看專門針對Python的「規則」。 –