为什么我在python中使用此代码获得类型错误?

时间:2016-05-15 02:41:36

标签: python

def word(longest):
   max_length = 0;
   words = longest.split(" ")
   for x in words:
      if len(words[x]) >  max_length:
        max_length = len(words[x])

   return max_length

word("Hello world")

确切错误:

TypeError: list indices must be integers, not str

我仍然是一个菜鸟,所以请,没有意思。

2 个答案:

答案 0 :(得分:3)

因为您使用x作为索引,所以当它实际上是字符串本身时。

你可以这样做:

for x in words:
      if len(x) >  max_length:
        max_length = len(x)

答案 1 :(得分:3)

执行for x in words后,x就是一个单词。因此,您不需要words[x]来获取信息。 words[x]期望x是一个整数,但它是一个字符串,这就是你得到错误的原因。

所以你应该写:

for x in words:
    if len(x) >  max_length:
        max_length = len(x)