如何不计算用户输入的重复项?

时间:2015-10-04 07:20:04

标签: python python-3.x

这是我目前的代码:

words = []
word = input('Word: ')
while word != '':
  words.append(word)
  word = input('Word: ')
print("You know "+ str(len(words)), "unique word(s)!")

这就是我需要的:

  

Word:聊天

     

Word:Chien

     

Word:聊天

     

字:Escargot

     

字:

     

你知道3个独特的单词!

不应该计算任何重复的单词。我不确定如何避免这种情况。因为我做了除此之外的所有其他事情。有一个简单的方法,但只是一个简单的方法吗?

1 个答案:

答案 0 :(得分:4)

使用words运算符检查单词是否已在in列表中:

words = []
word = input('Word: ')
while word != '':
    if word not in words:
        words.append(word)
    word = input('Word: ')
print("You know "+ str(len(words)), "unique word(s)!")

这样可以很好地进行,但是对于列表,成员资格测试是 O(n)。 考虑使用set来加快查找速度。

它将由set.add方法隐式执行(“将元素添加到集合。如果元素已经存在,则无效。”) :

words = set()
word = input('Word: ')
while word != '':
    words.add(word)
    word = input('Word: ')
print("You know "+ str(len(words)), "unique word(s)!")

请注意,字符串格式化是更好(更简单)格式化输出的方法:

print("You know "+ str(len(words)), "unique word(s)!")

可以

print("You know {} unique word(s)!".format(len(words)))