元组,检查字符串中的字母

2024-04-25 19:25:20 发布

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

我有这个密码:

prefixes = "JKLMNOPQ" 
suffix = "ack" 

for letter in prefixes: 
    if letter in ("O", "Q"):
        print letter + "u" + suffix
    else:
        print letter + suffix

它工作正常,但我有一个问题,理解一件事。我假设:

if letter in ("O", "Q"):

创建包含两个字母的新元组:O和Q,并检查是否存在值字母。你知道吗

我不确定的是为什么这不能正常工作:

if letter == "O" or "Q":

此代码将在所有前缀中添加“u”,而不仅仅是那些带有“O”和“Q”的前缀。你知道吗


Tags: or代码in密码forif字母suffix
3条回答
if letter == "O" or "Q":

这可以重写为:

if (letter == "O") or ("Q"):

最后一部分,不是空的字符串,总是计算为True,因此整个表达式是True。你知道吗

所以你要这样写:

if letter == "O" or letter == "Q":

或者使用元组代码(更好)。你知道吗

所有这些都做同样的事情:

if letter == "O" or letter == "Q":
if letter in ("O", "Q"):
if letter in "OQ":

if letter == "O" or "Q":的计算方式与if (letter == "O") or "Q":相同,"Q"的计算方式为True,因此此表达式始终返回True。你知道吗

相等比较优先于“or”运算符:http://docs.python.org/reference/expressions.html#summary

if letter == "O" or "Q":

如果1)字母为“O”或2)“Q”,则成功

由于“Q”的计算结果为True,因此if语句始终成功。你知道吗

相关问题 更多 >