2014-10-17 30 views
0

我正在使用grok学习,我似乎无法通过这个问题。您需要制作一个程序程序,您可以一次输入一个单词,并被告知您输入了多少个独特单词。你不应该重复重复。当你输入一个空白行时,程序应该停止询问更多的单词。使用列表查找唯一条目。 Python

这是我当前的代码:

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

它计算的话您输入的金额,但我无法弄清楚如何使它检查它的词是独一无二的。下面是所需的输出:

Word: Chat 
Word: Chien 
Word: Chat 
Word: Escargot 
Word: 
You know 3 unique word(s)! 

这里是另一个:

Word: Katze 
Word: Hund 
Word: Maus 
Word: Papagei 
Word: Schlange 
Word: 
You know 5 unique word(s)! 
+0

使用一组,而不是一个列表。 – 2014-10-17 04:07:14

+0

请继续,我真的需要帮助 – 2014-10-17 04:07:54

+0

我认为阅读[什么是一套](https://docs.python.org/3.4/library/stdtypes.html#set-types-set-frozenset)会照亮。 – 2014-10-17 04:10:01

回答

3
>>> words = ['Chat', 'Chien', 'Chat', 'Escargot'] 
>>> set(words) 
set(['Chien', 'Escargot', 'Chat']) 
>>> "You know " + str(len(set(words))) + " unique word(s)!" 
'You know 3 unique word(s)!' 
0

使用一组,如果你不想让存储复本。

words = set() #initialize a set 
word = input("Word: ") 
while word != '': 
    words.append(word) 
    word = input("Word: ") 
print('You know', len(words), 'unique word(s)!') 

如果你想存储的所有元素,不论重复的,如果你想找到一个列表中的独特元素使用列表
,这样做:根据你应该什么

myset = set(words) #Now, myset has unique elements 
print('You know', len(myset), 'unique word(s)!') 
0

已经在课程中学习了这一点,您可以使用if语句来检查您正在查看的单词是否已在words列表中,并且只有在列表中尚未添加它时才会添加它:

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

您将在本课程的后面学习更多关于集合(这是解决此问题的更有效方法)。