2015-10-09 53 views
2

在python的while語句中使用!=操作有什麼特別的規則。例如我有這樣的代碼循環不等於(!=)操作在while循環中不起作用

input("f_l value ") 
while f_l != "s" or f_l != "S" or f_l != "q" or f_l != "Q": 
    print("Error") 
    input("f_l value ") 
print("your f_l is correct") 

while循環不會停止並打印值。我不知道爲什麼。有任何想法嗎?

+8

您還沒有分配給'f_l' ... – rlbond

+0

[執行塊可能的複製,如果一個變量不某些特定值之一](http://stackoverflow.com/questions/26337003/execute-block-if-a-variable-is-not-one-of-some-specific-values) – Barmar

+1

'或'應該是'和'。 – Barmar

回答

4

首先,你是而不是指定input()的返回值爲f_l,那麼它怎麼可能包含所需的值呢?你應該做這樣的事情:

f_l = input('f_l value') 
while f_l != 's' or f_l != 'S' or f_l != 'q' or f_l != 'Q': 
    print('Error') 
    f_l = input('f_l value') 

print('your f_l is correct') 

現在,還是永遠循環下去。爲什麼?由於什麼可以's''S''q''Q'同時,因爲這是你與or S作爲條件的循環來完成表達什麼。也許你想用and代替它們?

while f_l != 's' and f_l != 'S' and f_l != 'q' and f_l != 'Q': 

現在,這樣的作品,但它仍然不是最佳的。你檢查每一個可能的輸入值,而不是simplifing自己,做這樣的事情:

while f_l.lower() not in ['s', 'q']: 
+0

@saulspatz:呃......這就是我說的,不是嗎? **編輯**:對不起,我沒有理解你評論的第一句話。請你澄清一下,好嗎? – 3442

+0

你是對的;當我讀到你的答案時,我不知何故跳過了那段。抱歉。 – saulspatz