0

我刚从 python 开始,我必须定义一个函数来检查列表中有多少个字符串有超过 2 个字符或它们的第一个和最后一个字符相同:

def match_ends(words):
  count=0
  for w in words:
    if len(w)>=2:
      count+=1
    elif w[0]==w[-1]:
      count+=1
  return count

我收到一条错误消息:

elif w[0]==w[-1]:
IndexError: string index out of range

这是什么意思,我该如何纠正?

4

4 回答 4

3

通过写作elif w[0]==w[-1]:,你从最后开始索引——换句话说,最后一个元素。也许它是一个空字符串,所以没有要引用的最后一个元素?尝试随时打印字符串,以便查看发生了什么。

于 2013-07-14T06:37:33.623 回答
3

您应该检查是否w为空字符串。

>>> w = ''
>>> w[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
于 2013-07-14T06:37:41.273 回答
1

您可能要添加:

elif len(w)>0 and w[0]==w[-1]:
于 2013-07-14T07:08:51.660 回答
0

在你 elif 的情况下,你用 len<2 捕获单词并得到错误。我认为问题的表述有问题。

于 2013-07-14T11:05:17.770 回答