运行回文查找器代码时出错:[TypeError: 'builtin_function_or_method' object is not subscriptable]

问题描述 投票:0回答:1

回文 | ˈpalənˌdrōm | 名词 向后读与向前读相同的单词、短语或序列,例如,女士或护士跑。

“palindrome_finder”项目包括 3 个文件:名为“dict.txt”的字典文件、名为“load_dictionary.py”的字典加载器文件以及名为“palingram_finder”的主文件(识别字典文件中的回文)。 py'.

运行该文件后,我收到以下错误:

Traceback (most recent call last):
  File "/Users/cheshirecat/Desktop/python_projects/palingram_finder/palingram_finder.py", line 16, in <module>
    if word[::-1] == word and len(word) >= 3:
       ~~~~^^^^^^
TypeError: 'builtin_function_or_method' object is not subscriptable
[Finished in 58ms with exit code 1]

对于上下文,这是两个 python 文件。

加载字典

import sys

def load(file):
    """Open a text file and return a list of lowercase strings"""

    try:
        with open(file) as in_file:
            loaded_txt = in_file.read().strip().split()
            loaded_txt = [x.lower for x in loaded_txt]

            return loaded_txt

    except IOError as e:
        print("{}\n Error opening {}. Terminating program.".format(e, file), file=sys.stderr)
        sys.exit(1)

palingram_finder

from load_dictionary import load
from pprint import pp

word_list = load('./dict.txt')
palindrome_list = []

for word in word_list:
    if word[::-1] == word and len(word) >= 3:
        palindrom_list.append(word)

print("Number of palindromes found: {}\n\n".format(len(palindrome_list)))
pp(palindrome_list)

尝试修复: 我使用内置的 python shell 测试了简化版本的回文识别代码,如下所示。

>>> word_list = ['betrayal', 'enigma', 'tenet', 'multitude', 'did']
>>> 
>>> palindrome_list = []
>>> 
>>> for word in word_list:
...     if len(word) >= 3 and word[::-1] == word:
...             palindrome_list.append(word)
... 
>>> palindrome_list
['tenet', 'did']
>>> exit()

既然它有效,我认为问题出在字典的加载方式上。 这就是我陷入困境的地方,因为当我以与 load_dictionary.py 相同的方式在

Sublime 文本编辑器
shell 中加载字典时,我会得到一个字符串列表。那应该不行吧?

python typeerror
1个回答
0
投票

您收到的错误是由于

load_dictionary.py
文件中的这一行造成的:

loaded_txt = [x.lower for x in loaded_txt]

您不是在调用

x.lower
,只是引用它。将其称为方法:

loaded_txt = [x.lower() for x in loaded_txt]

这将解决您的问题😊。

© www.soinside.com 2019 - 2024. All rights reserved.