2024-10-03 02:35:46 发布
网友
所以,我有这个:
while cancer[j] != ("l"or"r"or"c")
它停在第一个“l”处,当它在弦之间有一些r和c时,它的行为就像没有“或”,只有“l”。你知道吗
例如,我的字符串是:
c56r36c20l80c23l180c23l20c55r70
它返回:
c56r36c20
它停在第一个“l”处,中途跳过“c”和“r”。你知道吗
它工作正常;只是没有按你认为的那样工作:
("l" or "r" or "c")
返回该列表上的第一个非false项(bool(item) is true),如果没有,则返回false。这意味着它将返回"l"。你知道吗
bool(item) is true
"l"
所以你的while循环实际上是:
while cancer[j] != "l":
相反,你想要的是:
while cancer not in ('l', 'r', 'c')
或者
while not cancer in ('l', 'r', 'c')
两者几乎是一样的。你知道吗
通常,如果'or'语句中的一个表达式的计算结果为True,则表达式的其余部分根本不计算。因此,当字符串中遇到第一个“l”时,while条件将在此处中断。你知道吗
True
你应该有这样的东西:
while cancer[j] not in ('l', 'r', 'c'):
它工作正常;只是没有按你认为的那样工作:
返回该列表上的第一个非false项(
bool(item) is true
),如果没有,则返回false。这意味着它将返回"l"
。你知道吗所以你的while循环实际上是:
相反,你想要的是:
或者
两者几乎是一样的。你知道吗
通常,如果'or'语句中的一个表达式的计算结果为
True
,则表达式的其余部分根本不计算。因此,当字符串中遇到第一个“l”时,while条件将在此处中断。你知道吗你应该有这样的东西:
相关问题 更多 >
编程相关推荐