#validCandidateList += word保持注释时,程序运行正常。当取消注释该行时,程序将开始反复打印一些重复的行。
2.如您所见,sorted(set(eWord))已排序,因此
例如,如果我输入“ dog”或“ good”,它将创建相同的排序列表
字母-['d', 'g', 'o'],但程序不会打印
输入为good时,将单词dog删除,即使您可以
通过输入两个词来确认字典中是否存在这两个词
在单个程序中,用空格隔开,或输入以下内容之一
对不起,我只需要对单词应用.lowercase()即可。字典也包含一些大写字母。

请帮忙。


import os

cwd = os.path.dirname(os.path.abspath(__file__))
fname = "\\dictionary.txt"
file = open(cwd + fname, "r")
readFile = file.read()
dictionary = readFile.split() #list type variable with more than 400 000 words.

input = input("Input your list of words, separated by spaces: ")
inputList = input.split()

validCandidateList = inputList

for eWord in dictionary:
    for word in inputList:
        if sorted(set(eWord)) == sorted(set(word)):
            print(word, ": ",eWord)
            #validCandidateList += word

print(validCandidateList)

最佳答案

我找到了!

您的行在这里:

validCandidateList = inputList


不会像您期望的那样将inputList的内容复制到名为validCandidateList的新变量中,它只是链接两个变量,因此当您在循环中更改validCandidateList时,它也会同时更改inputList正在尝试循环。更改您要遍历的列表会在Python中引起大问题(请勿这样做)。因此,要解决此问题,您实际上需要像这样将inputList的内容复制到validCandidateList中:

validCandidateList = inputList[:]


另外,如果您使用的是Python 3,则可以使用copy()函数

validCandidateList = inputList.copy()


对于您正在做的事情,这看起来更明显,但是两者都很好:)

10-01 02:28