0

嗨,我遇到了一个问题,我不明白为什么会出现类型错误,请解释它是什么以及如何解决它提前谢谢!

abb = raw_input("Abbreviation: ")
text = raw_input("Text: ")
text = text.lower().split()
abb = abb.lower().split
list1 = []
i = 0
j = 0

while i < len(text):
    for i in range(len(text)):
        if text[i].startswith(abb[0]):
            list1.append(text[i])
            for i in range(len(text)):
                if text[i].startswith(abb[1]):
                    list1.append(text[i])
                    for i in range(len(text)):
                        if text[i].startswith(abb[2]):
                            list1.append(text[i])
4

4 回答 4

6

查看您的线路

abb = abb.lower().split

(并将其与上面的正确线进行比较)。您不调用该函数,只需将其分配给与方法本身abb相同的对象。split

因此,当您尝试时abb[0],它会尝试为函数本身下标。

于 2012-09-09T10:30:49.490 回答
1

更改abb = abb.lower().splitabb = abb.lower().split()

于 2012-09-09T10:29:04.000 回答
0

这意味着在您的代码中使用方括号表示法(即“下标”一个可迭代对象)的某个时刻,该事物是不可迭代的。在某个你认为你有一个字符串的地方,你实际上有一个函数。

无论如何,这就是错误消息告诉您的内容。当您像这样调试一些代码时,只需将大量打印语句放入其中,看看哪里出了问题。

于 2012-09-09T10:30:00.747 回答
0

在第 4 行,你把

abb = abb.lower().split

这将为您提供小写 abb 字符串的拆分函数,而不是调用它。只需将上面的代码更改为:

abb = abb.lower().split()

就像您在上一行中使用字符串文本处理代码一样。

于 2012-09-09T12:39:15.773 回答