2024-06-16 11:28:22 发布
网友
这是我的密码
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”
l inabc(l,z)应该是一个字符串列表,它将"l"和"z"组合成一个字符串
abc(l,z)
"l"
"z"
我得到一个Index Error: list index out of range
Index Error: list index out of range
这里有几个问题
首先,range(0, länge+1)将在länge处停止,但是您的列表只有从0到länge - 1的索引,所以这是IndexError的一个来源
range(0, länge+1)
länge
0
länge - 1
IndexError
其次,L[x]+z将给您另一个IndexError,因为L是空的,但是您尝试访问L[0](在下一次迭代中,由于错误,L[1],L[2],等等)
L[x]+z
L
L[0]
L[1]
L[2]
第三,即使没有IndexError,语句L[x]+z也不会起任何作用。你计算L[x]+z的值,但是你没有给它赋值,所以它会立即丢失
第四,为了print您的最终结果,将对print的调用放在for循环之后,而不是内部。如果您真的想对函数产生的结果做些什么,请考虑使用return而不是print(请务必了解print和return之间的区别)
print
for
return
第五,您希望构建一个字符串,因此listL的用法没有多大意义。从一个空字符串开始,将当前项从l和z添加到循环体中(再加上一个重新赋值,以避免丢失新计算的值)
l
z
最后,在这里使用range是没有意义的。只需编写for x in l:,就可以直接遍历列表中的值
range
for x in l:
这应该给你足够的时间来处理和修复你的代码
(如果你不在乎为什么你的函数不起作用,而且这不是一个练习,只需按照注释中的建议使用str.join。)
str.join
这里有几个问题
首先,
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
之间的区别)第五,您希望构建一个字符串,因此list
L
的用法没有多大意义。从一个空字符串开始,将当前项从l
和z
添加到循环体中(再加上一个重新赋值,以避免丢失新计算的值)最后,在这里使用
range
是没有意义的。只需编写for x in l:
,就可以直接遍历列表中的值这应该给你足够的时间来处理和修复你的代码
(如果你不在乎为什么你的函数不起作用,而且这不是一个练习,只需按照注释中的建议使用
str.join
。)相关问题 更多 >
编程相关推荐