2016-03-07 57 views
0

我正在尝试制作一个程序,它将用户的单词放入列表中,然后输出用户输入的唯一单词的数量。该程序在接收到空白输入时打印出唯一字。这是我写的。学习单词简单程序

amount = [] 
nuword = input('Word: ') 
while nuword != '': 
    nuword = input('Word: ') 
    if nuword in amount: 
    amount.pop(-1) 
    else: 
    amount.append(nuword) 
print('You know',len(amount), 'unique word(s)!') 

是否有一种简单的方法来打印列表中的所有唯一字。像某种功能?或者我必须改变循环中的某些内容?

+0

参见:http://stackoverflow.com/questions/7961363/removing-duplicates-in-lists – nha

回答

0
counts = {} 

nuword = 1 
while nuword: 
    nuword = input("Word: ") 
    if nuword not in counts: counts[nuword] = 0 
    counts[nuword] += 1 

uniquewords = [] 
for word, count in counts.items(): 
    if count != 1: continue 
    uniquewords.append(word) 
0

这是sets的理想人选,这是类似名单,但只包含的东西一个副本。

示例设置用法:

words = set() 
words.add('apple') 
words.add('bee') 
words.add('apple') 
print(words) 
> {'apple', 'bee'} 

这里是你的代码稍加修改使用套

amount = set() 
nuword = input('Word: ') 
while nuword != '': 
    nuword = input('Word: ') 
    amount.add(nuword) 
print('You know',len(amount), 'unique word(s)!') 

我也建议考虑开始/尾的空格和大写/小写的情况。眼下,以下所有可算作自己的字

abc 
abc 
abc 
aBc 

(提示,第三人有尾随空格),我们将使用一些方便的方法来摆脱空白,把小写。

' aBc '.strip().lower() 
> 'abc' 

与所有的编辑:

amount = set() 
nuword = input('Word: ') 
while nuword != '': 
    nuword = input('Word: ') 
    amount.add(nuword.strip().lower()) 
print('You know',len(amount), 'unique word(s)!')