编写一个简单的代码将唯一字符串存储到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);