【发布时间】:2019-07-24 07:36:09
【问题描述】:
挑战是在不使用范围函数的情况下计算列表中元素的乘积。
这是我的程序:
def prod(L):
a = 1
for i in L:
a *= L[i]
return a
我很确定当我编写 for 循环时,它应该遍历列表,但是当我运行这个程序时,我得到了索引超出范围的错误。为什么会这样?如何更改程序以使其正常工作?
提前感谢您的回复!
【问题讨论】:
-
for i in L: print(i)看看那个输出。尝试使用[0, 1, 20],L[i]失败的原因应该很明显;第三个值尝试从您可以清楚地看到仅包含 3 个项目的列表中获取第 21 个(不要忘记我们有 0 个索引)项目。您不能从包含 3 个项目的列表中获取位置 21 的项目 -
使用
a *= i。您正在遍历列表元素。 -
for i in L为您提供L中的每个值,而不是L 中的每个索引。只需执行a *= i,而不是a *= L[i].
标签: python