当我在列表中使用.index()时,为什么我的代码没有检测到我输入到这个列表中的任何变量?

t3irkdon  于 2022-09-18  发布在  Java
关注(0)|答案(2)|浏览(172)
wordList = []
counter = 0
y = 1
total = 0
wordTotal = 0
while y == 1:
    word = input("enter wordsn")
    continued = input("do you want to continue? y or n ")
    if continued == "n":
        y = 0
    total = total + 1
    newWords = []
    wordList.append(word)
    wordCount = wordList.count(word)
    totals = []
    if wordCount > 1:
        wordTotal = wordTotal - 1
        whichWord = newWords.index(word)
        totals[whichWord] = totals[whichWord] + 1
    if wordCount == 1:
        wordTotal = total - wordTotal
        newWords.append(word)
        print(newWords)
        totals.append(1)
        print(totals)
    if wordTotal == 0:
        wordTotal = 1

print("the number of different words is", wordTotal)

这个程序接受用户输入的单词,并统计某些单词有多少次重复,以及有多少个不需要的单词。在代码中的第二个if语句中,当我尝试对数组newWords[]进行索引,并更新1->2、2->3等中重复单词的值时,它显示ValueError:‘...’不在列表中。但是,当我在第三个if语句中打印出newWords列表时,值就在那里。

非常抱歉,如果我犯了一个Obivous错误--我是巨蟒的新手,非常感谢大家的帮助:D.

l5tcr1uw

l5tcr1uw1#

如果你第一次进入这个房间

if wordCount > 1:
        wordTotal = wordTotal - 1
        whichWord = newWords.index(word)
        totals[whichWord] = totals[whichWord] + 1

单词等于用户输入的第二个单词,你同意吗?但由于在newWords中添加单词的唯一时间是在以下几行中:

if wordCount == 1:
        wordTotal = total - wordTotal
        newWords.append(word)
        print(newWords)
        totals.append(1)

当您到达上面的if wordCount > 1:时,newWords中唯一的单词是用户输入的第一个单词,因此第二个单词不在其中,以及您的错误原因

让我们一起来做一次运行:用户输入“Hello”,因此Hello在Word中,您将其添加到

wordList.append(word)

并且wordcount=1,所以您进入if循环

if wordCount == 1:
            wordTotal = total - wordTotal
            newWords.append(word)
            print(newWords)
            totals.append(1)

现在,newWords=[“Hello”]

现在用户输入另一个单词,例如“World”,所以现在

Word=“World”Word Counts=2

newWords = ["Hello"]

因为您从未在其中添加“World”,而是在

if wordCount > 1:
            wordTotal = wordTotal - 1
            whichWord = newWords.index(word)
            totals[whichWord] = totals[whichWord] + 1

您正在尝试访问NewWords中的单词“World”

flvlnr44

flvlnr442#

如果您使用的是Python3.8+,则可以使用以下代码。

可以基于用户输入来控制循环。如果用户只按了Return,那么*Input()*返回的值将是一个空字符串,这是‘Falsy’。否则,将该单词添加到词典中,并根据需要增加单词计数。

因此,您所需要的就是:

counter = {}

while (word := input('Enter a word or <return> to end: ')):
    counter[word] = counter.get(word, 0) + 1

print(*counter.items())

相关问题