我有这个密码:
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”的前缀。你知道吗
这可以重写为:
最后一部分,不是空的字符串,总是计算为
True
,因此整个表达式是True
。你知道吗所以你要这样写:
或者使用元组代码(更好)。你知道吗
所有这些都做同样的事情:
行
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语句始终成功。你知道吗
相关问题 更多 >
编程相关推荐