求列表中左和等于右和的元素索引结果错误,请问代码存在什么问题
代码问题说明
- 核心逻辑错误:混淆了
range()函数和列表切片的作用。sum(range(L[0], L[i]))是求从L[0]到L[i]-1的连续整数的和,完全不是计算列表L中索引0到i-1的元素和,右侧求和的sum(range(L[i+1], L[-1]))也是同样的错误。 - 索引获取错误:
L.index(L[i])在列表存在重复元素时,只会返回该值第一次出现的索引,无法正确输出当前匹配位置的索引,直接输出循环变量i即可。 - 输出逻辑错误:当前代码只要单次循环判断不满足就会打印
0,会输出大量无效的0值。正确逻辑是遍历完整个列表都没有找到符合条件的索引时,再输出无匹配的标识值。 - 右侧求和范围错误:即使不考虑
range的误用,range(L[i+1], L[-1])也不会包含列表最后一个元素,导致右侧求和永远少算最后一个值。
修正后代码
L=[] n=int(input("enter the number of values to be added to the list: ")) for i in range(0,n): k=int(input("enter the values: ")) L.append(k) found = False for i in range(0,n): if sum(L[:i]) == sum(L[i+1:]): print(i) found = True break if not found: print("0")
内容的提问来源于stack exchange,提问作者Jeevan B A
相关产品推荐
相关产品推荐

