在==False中使用if no存储唯一字符串



编写一个简单的代码将唯一字符串存储到list中。但是,如果我使用if var in list == False,则字符串输出=blank。但是,如果我使用If var not in list,我得到了所需的输出。

请说明if var in list == False在这里不起作用的原因。

bank = list()
while True:
word = input('Enter a word,type"done"to finish')
if word == 'done': break
if word in bank == False: # this code does't work as intended
bank.append(word)
bank.sort()
print(bank)

它有点微妙,但它是因为比较链接。比较器< | > | == | >= | <= | != | is [not] | [not] in具有相同的先见之明,并且从左到右进行比较。此外,操作的链接与添加";和";。熟悉的例子是:

x < y <= z等价于x < y and y <= z

in也是如此。你的表情和一样

if (word in bank) and (bank == False):
....

您的工作示例if word in bank:是编写表达式的规范方式。。。没必要让它变得复杂!

您的代码不起作用,因为它表示为:

if word in (bank == False):

这就像数学中的运算顺序,所以它首先处理bank是否为False,而不是先处理word是否在bank中,所以如果你使用括号,它会起作用:

if (word in bank) == False:

如果你把它改成上面的^,它就会起作用。

当然,如果你使用,更推荐使用

if word not in bank:

@tdelaney给出了正确的答案。以下是您的写作方式:

if word not in bank:
bank.append()

或者最好使用集合而不是列表。

bank = set()
while True:
word = input('Enter a word,type"done"to finish')
if word == 'done':
break
bank.add(word)
bank = list(bank)
bank.sort()
print(bank);

相关内容

最新更新