我只是想知道为什么这不起作用(我试图从一本书中给小鸭子起名:Jack,Kack,Lack,Mack,Nack,Ouack,Pack,Quack)注意:Quack和Ouack有一个U
prefixes = 'JKLMNOPQ'
suffix = 'ack'
for letter in prefixes:
if letter != 'O' or 'Q': #I know this doesn't work, need to know alternative
print letter + suffix
else:
print letter + 'u' + suffix
Run Code Online (Sandbox Code Playgroud)
你可能是这个意思:
if letter != 'O' or letter != 'Q':
Run Code Online (Sandbox Code Playgroud)
原始陈述的结果,
if letter != 'O' or 'Q':
Run Code Online (Sandbox Code Playgroud)
与letter结果相比'O' or 'Q',这是一个布尔值(确切地说是真的)(所以你可以看到为什么这种比较总是如此).
请注意
if letter != 'O' or 'Q':
Run Code Online (Sandbox Code Playgroud)
实际上是
if (letter != 'O') or 'Q':
Run Code Online (Sandbox Code Playgroud)
那可能不是你想要的.
只是一个小测试:
>>> True != False or True
True
>>> (True != False) or True
True
>>> True != (False or True)
False
Run Code Online (Sandbox Code Playgroud)
注意:这意味着顶部标记的答案不正确,字母不与O或Q的结果进行比较......