Issue
I'm trying to sum the values of a list using a for
loop. This is my code:
def sumAnArray(ar):
theSum = 0
for i in ar:
theSum = theSum + ar[i]
print(theSum)
return theSum
I get the following error:
line 13, theSum = theSum + ar[i]
IndexError: list index out of range
I found that what I'm trying to do is apparently as simple as sum(ar)
. But I want to understand: Why do I get this IndexError
, and how should I write the for
loop instead? How does the loop actually work?
For a technical overview of how Python implements for
loops and the iterator protocol, see e.g. How does a Python for loop with iterable work?.
Solution
When you loop in an array like you did, your for variable(in this example i
) is current element of your array.
For example if your ar
is [1,5,10]
, the i
value in each iteration is 1
, 5
, and 10
.
And because your array length is 3, the maximum index you can use is 2. so when i = 5
you get IndexError
.
You should change your code into something like this:
for i in ar:
theSum = theSum + i
Or if you want to use indexes, you should create a range from 0 ro array length - 1
.
for i in range(len(ar)):
theSum = theSum + ar[i]
Answered By - Mr Alihoseiny
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.