Python - Palindrome函数:接收错误“列表索引必须是整数或切片,而不是str”

时间:2017-11-13 15:29:23

标签: python function ipython palindrome words

我一直在尝试使用以下代码来创建回文。我有一个名为'lowercasewords'的txt文件,它实际上是一个包含小写单词的列表,我要查询它,并且我想将拼写相同的单词附加到名为'lines2'的列表中。

代码如下:

def palindrome():
    lines = open('lowercasewords.txt','r').read().splitlines()
    lines2 = []
    for x in lines:
        if (lines[x]) == (lines[x][::-1]) is True:
            lines2.append(str(x))
        else:
            pass
    print(lines2)

但是,我收到错误:

TypeError: list indices must be integers or slices, not str

任何人都可以帮忙吗?我可以证明“水平”这个词是相反的:

str(lines[106102]) == str(lines[106102][::-1])
True

1 个答案:

答案 0 :(得分:4)

当您运行for x in lines:时,x将设置为列表中的当前单词。然后,您的代码尝试在lines中获取该单词的索引。这相当于说lines["hello"],这没有任何意义。该循环已将x设置为您想要的值,因此您无需再引用lines

您也无需检查某些内容is True,if语句是否已针对Truefalse语句进行测试。

您只需更换

即可解决问题
if (lines[x]) == (lines[x][::-1]) is True:

if x == x[::-1]: