我正在尝试创建一个程序,该程序从用户处获取单词,将它们放入列表中,然后打印用户输入的唯一单词数量。程序在收到空白输入时打印出唯一的单词。这就是我写的。
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 :(得分: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)
答案 1 :(得分: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
(提示,第3个有尾随空格)我们将使用一些方便的方法来摆脱空白并转向小写。
' 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)!')