Python:While不使用“or”

2024-10-03 02:35:46 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有这个:

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

它停在第一个“l”处,当它在弦之间有一些r和c时,它的行为就像没有“或”,只有“l”。你知道吗

例如,我的字符串是:

c56r36c20l80c23l180c23l20c55r70

它返回:

c56r36c20

它停在第一个“l”处,中途跳过“c”和“r”。你知道吗


Tags: or字符串whilecancerc56r36c20c56r36c20l80c23l180c23l20c55r70
2条回答

它工作正常;只是没有按你认为的那样工作:

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

返回该列表上的第一个非false项(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')

两者几乎是一样的。你知道吗

通常,如果'or'语句中的一个表达式的计算结果为True,则表达式的其余部分根本不计算。因此,当字符串中遇到第一个“l”时,while条件将在此处中断。你知道吗

你应该有这样的东西:

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

相关问题 更多 >