# Digit Sum - Practice Makes Perfect

#1

I cannot get my code to run! The console no longer has an error message but there is a pop up saying "Oops, try again. Does your digit_sum function take exactly one argument (a positive integer)? Your code threw a "'type' object has no attribute 'getitem'" error. "

My function takes a positive parameter so I don't understand!

``````def digit_sum(n):
result = 0
n = str(n)
for x in range(len(n)):
result += str[x]
return result``````

#2

Your code is wrong because you haven't defined a list called str, which you are calling in your `for` loop by using `str[x]`... You should instead use `int(n[x])` That should fix your problem

#3

I was having trouble with this and got it to work with your suggestion above. But I was wondering someone could explain the result = 0 (as in why you need that) and then more importantly what int(n[x]) is actually doing. Also why you need the range function. Thanks!

#4

Hello @jacobson.shellie,

You need that line because in your for loop you are adding up the numbers in the argument passed to the function... So you need to start with a zero and add up the numbers one by one...

You can't add strings to a number, and so what the `int()` function is doing is that its converting it to a number, and then adds in to result...

Hope this clears out your doubts...