2015-10-04 4 views
2

Это мой текущий код:Как не считать дубликаты с пользовательского ввода?

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

Это то, что мне нужно:

Слово: чат

Слово: Chien

Слово: чат

Слово: Escargot

Word:

Вы знаете 3 уникальных слова!

Не предполагается считать любые повторяющиеся слова. Я не знаю, как этого избежать. Потому что я сделал все остальное, кроме этого. Есть простой способ, но простой?

+2

Вы хотите использовать ['set()'] (https://docs.python.org/2/library/sets.html)? –

+1

Довольно ясный вопрос, но я думаю, что, вероятно, тоже спрашивают. – RFlack

+0

@RFlack Я так думаю: http://stackoverflow.com/questions/7961363/python-removing-duplicates-in-lists –

ответ

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 (п) для списков. Рассмотрите возможность использования set s для более быстрого поиска.

Это будет выполняться неявно методом 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))) 
Смежные вопросы