Python 3错误错误理解(IndexError)

时间:2017-11-24 18:50:24

标签: python python-3.x

这是我的代码

def abc(l,z):
    L=[]
    länge= len(L)
    for x in range(0, länge+1):
        L[x]+z
        print(L)

abc(["1","2","3"],"-")

我希望程序输出" 1-2-3"

abc(l,z)中的

l应该是字符串中的列表,它将"l""z"组合到单个字符串中。

我得到Index Error: list index out of range

1 个答案:

答案 0 :(得分:2)

这里有几个问题。

首先,range(0, länge+1)将停留在länge,但您的列表只包含从0länge - 1的索引,因此这是一个来源IndexError

其次,L[x]+z会为您提供另一个IndexError,因为L为空,但您尝试访问L[0](并且在下一次迭代中,您不会{因错误而导致L[1]L[2]等等。

第三,即使没有IndexError,语句L[x]+z也不会做任何事情。您计算L[x]+z的值,但之后您不会为其分配任何变量,因此会立即丢失。

第四,为了print您的最终结果,请在print循环后调用for,而不是在内部。如果您确实想要对函数生成的结果执行某些操作,请考虑使用return而不是print(确保自己了解printreturn之间的区别)。

第五,你想构建一个字符串,所以列表L的使用没有多大意义。从空字符串开始,在循环体中将lz中的当前项添加到循环体中(再加上重新分配,以便不丢失新计算的值)。

最后,在这里使用range毫无意义。您只需编写for x in l:

即可迭代列表direclty中的值

这应该足以让你现在可以使用并修复你的代码。

(如果您不关心为什么您的功能不起作用而且这不是练习,只需按照评论中的建议使用str.join。)