我一直在尝试使用以下代码来创建回文。我有一个名为'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
答案 0 :(得分:4)
当您运行for x in lines:
时,x
将设置为列表中的当前单词。然后,您的代码尝试在lines
中获取该单词的索引。这相当于说lines["hello"]
,这没有任何意义。该循环已将x
设置为您想要的值,因此您无需再引用lines
。
您也无需检查某些内容is True
,if语句是否已针对True
或false
语句进行测试。
您只需更换
即可解决问题if (lines[x]) == (lines[x][::-1]) is True:
与
if x == x[::-1]: