无法从类中迭代列表

use*_*061 1 python

我目前正在做一个"拼写检查"问题.

我已经创建了一个包含字典的列表.

现在我想看看是否word在列表中.

我是新手使用Python的类,所以我可能错过了一些小东西.

最近的错误已经发生 "TypeError: 'list' object cannot be interpreted as an integer"

这是代码的摘录.

class SpellChecker():

    def __init__(self, file_name):
        self.__infile = open(file_name,'r')
        self.word_list = []
        self.temp = self.__infile.readline().strip("\n")
        while self.temp != "":
            self.word_list.append(self.temp)
            self.temp = self.__infile.readline().strip("\n")
        self.__infile.close()

    def spellcheck_word(self, word):
        self.word = word.strip(string.punctuation).lower()
        self.list = self.word_list
        for i in range(self.list):
            if self.word == self.list[i]:
                return True
            else:
                return False
def main():
    test = SpellChecker("dictionary.txt")
    print(test.spellcheck_word("apple"))
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 5

这是您遍历列表的方式:

for wrd in self.list:
Run Code Online (Sandbox Code Playgroud)

这是一种更简单的方法来做我认为你想做的事情.请注意,它不需要显式循环:

def spellcheck_word(self, word):
    self.word = word.strip(string.punctuation).lower()
    return self.word in self.word_list
Run Code Online (Sandbox Code Playgroud)

range是一个内置函数,它在python 3中创建一个列表(在python 2中)和一个iterable.如果有疑问,请使用内置函数help:

>>> help(range)
Run Code Online (Sandbox Code Playgroud)

Python 2范围

Python 3系列