2014-01-28 161 views
-2
code_str = input("Enter code: ") 

while code_str !="Q": 
    print("Code:",code_str) 
    if code_str == 'B' and code_str == "D" and code_str == "W": 
     print("Good Code.") 
    else: 
     print("Bad code. Try Again") 
    code_str = input("Enter code: ") 

我需要這樣做,它打印良好的代碼,只要B,D或W,由用戶輸入,但我無法弄清楚。謝謝!Python「IF」聲明

+1

它應該總是打印「錯誤的代碼」。我認爲 – Sheng

+2

'和'?那該怎麼辦? –

+2

不要編輯你的問題,把它變成一個完全不同的問題;問一個新的。 – user2357112

回答

0
if code_str == 'B' and code_str == "D" and code_str == "W": 

上述if語句的條件將始終評估爲False因爲code_str永遠都等於"B"等於"D"

爲了解決這個問題,你需要使用or而不是and

if code_str == 'B' or code_str == "D" or code_str == "W": 

,或者您可以使用in

if code_str in ("B", "D", "W"): 

編輯:

爲你的更新的問題,你可以使用str.lower

while code_str.lower() != "q": 
2

如果code_str是B,它不可能是DW在同一時間!

你需要改變你的andor

if code_str == 'B' or code_str == "D" or code_str == "W": 

或簡化了一下:

if code_str in ('B', 'D', 'W'): 

下面還可以進一步簡化,但將匹配BDDWBDW和空字符串以及。如果你已經消毒的輸入視爲單個字符,沒關係,但:

if code_str in 'BDW': 
+2

或者進一步簡化它:'在「BDW」' –

+0

良好的通話,但也許這是一次教導太多:) – mhlester

+4

不,這個元組是正確的。我們不想讓'BD'作爲輸入。 – user2357112

0
if code_str == 'B' and code_str == "D" and code_str == "W": 

應該

if code_str == 'B' or code_str == 'D' or code_str == 'W': 

或(更好):

if code_str in {'B', 'D', 'W'}: 
0

你會如果只有其中一個條件是True,則需要if聲明返回True ,所以不能使用and運營商,因爲如果所有條件均爲True,則該運營商只能返回True。因此,您應該用or運營商替換and運營商。