Python:虽然不使用“或”

时间:2016-03-26 00:33:50

标签: python while-loop

所以,我有这个:

while cancer[j] != ("l"or"r"or"c")

当它在字符串之间有一些r和c时,它停在第一个“l”的路上,它的表现就像没有“或”而只有“l”。

例如我的字符串就是这个:

c56r36c20l80c23l180c23l20c55r70

然后它返回:

c56r36c20

它在第一个“l”处停止,在路上跳过“c”和“r”。

2 个答案:

答案 0 :(得分:1)

它正常工作;它只是你认为应该如何工作:

("l" or "r" or "c") 

返回该列表中的第一个非虚假项目(bool(item) is true),如果没有,则返回false。这意味着它将返回"l"

所以你的while循环实际上是:

while cancer[j] != "l":

你想要的是:

while cancer not in ('l', 'r', 'c')

while not cancer in ('l', 'r', 'c')

两者几乎都是一样的。

答案 1 :(得分:1)

通常,如果'或'语句中的某个表达式求值为True,则表达式的其余部分根本不会被计算。因此,当在字符串中遇到第一个'l'时,while条件将在那里中断。

你应该有类似的东西:

while cancer[j] not in ('l', 'r', 'c'):