2015-10-09 49 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