为什么我的python代码输出了错误的东西?

为什么我的python代码输出了错误的东西?,python,python-3.x,list,for-loop,while-loop,Python,Python 3.x,List,For Loop,While Loop,因此,我的代码所做的是,它允许用户输入单词,然后检查他们是否有任何重复的单词;如果他们这样做了,那就不算了。所以在这之后,它会告诉你你知道多少“独特的词” 问题是:当没有重复项时,它会输出适量的“唯一单词”,但当有重复项时,它会输出适量的“唯一单词”-1。假设我用3个字,其中2个是重复的;它会说只有一个独特的词。感谢您的帮助。您可以将用户的输入拆分到空格中,然后将项目添加到集合中。一个集合包含唯一的项,因此向其中添加三次A将导致只包含一个A words=[] word=input("Word:"

因此,我的代码所做的是,它允许用户输入单词,然后检查他们是否有任何重复的单词;如果他们这样做了,那就不算了。所以在这之后,它会告诉你你知道多少“独特的词”


问题是:当没有重复项时,它会输出适量的“唯一单词”,但当有重复项时,它会输出适量的“唯一单词”-1。假设我用3个字,其中2个是重复的;它会说只有一个独特的词。感谢您的帮助。

您可以将用户的输入拆分到空格中,然后将项目添加到集合中。一个集合包含唯一的项,因此向其中添加三次A将导致只包含一个A

words=[]
word=input("Word:")
count=0
while word != '':
    count+=1
    words.append(word) 
    word=input("Word:")
    for w in words:
        if words.count(w)>1:
            count-=1 

print("You know",count,"unique word(s)")

如果在words.appendword之后添加打印字,可能有助于理解发生了什么

发生的情况是word作为新项添加到数组中。在递减计数的循环中,对于每个非唯一的单词,您将递减,也就是说,如果一个单词出现两次,您将递减两次

word = input('Word:')
split_word = word.split() # splits on space
set_word = set(split_word) # turns the list into a set
unique_words = len(set_word)
print("You know",unique_words,"unique word(s)")
另一个问题是for循环发生在每个输入之后,也就是说,将同一个副本递减多次

一个固定版本的程序,保持输入单个单词将是

单词=[] 字=输入字: 而单词!=: 单词 字=输入字: uniquewords=setwords 你知道的,独特的词,独特的词
谢谢你花时间回答我的问题,谢谢你对其他人的帮助,非常感谢。
Input          words           count
a              [a]               1
a, b           [a, b]            2
a, b, b        [a, b, b]         1
a, b, b, b     [a, b, b, b]     -1
a, b, b, c, c  [a, b, b, c, c]  -3