这是我的代码
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
。
答案 0 :(得分:2)
这里有几个问题。
首先,range(0, länge+1)
将停留在länge
,但您的列表只包含从0
到lä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
(确保自己了解print
和return
之间的区别)。
第五,你想构建一个字符串,所以列表L
的使用没有多大意义。从空字符串开始,在循环体中将l
和z
中的当前项添加到循环体中(再加上重新分配,以便不丢失新计算的值)。
最后,在这里使用range
毫无意义。您只需编写for x in l:
。
这应该足以让你现在可以使用并修复你的代码。
(如果您不关心为什么您的功能不起作用而且这不是练习,只需按照评论中的建议使用str.join
。)