首页 > 解决方案 > 为什么我的 python 代码输出错误的东西?

问题描述

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)")

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

问题是:当没有重复时,它会输出正确数量的“唯一单词”,但是当有重复时,它会输出“正确数量的唯一单词” - 1。所以假设我给出了 3 个单词,其中 2 个是重复;它会说只有 1 个唯一的单词。感谢您的任何帮助。

标签: pythonpython-3.xlistfor-loopwhile-loop

解决方案


如果您添加print(words)after可能有助于理解发生了什么words.append(word)

发生的事情是word作为新项目添加到数组中。在你递减的循环中,你递减count每个不唯一的单词,即如果一个单词出现两次,你递减两次。

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

另一个问题是 for 循环发生在每个输入之后,即您多次递减相同的副本。

不断输入单个单词的程序的固定版本是

words=[]
word=input("Word:")
while word != '':
    words.append(word)
    word=input("Word:")

uniquewords = set(words)
print("You know",len(uniquewords),"unique word(s)")

推荐阅读