4. digit_sum mathematical solution for the task


Hello, guys! I would like to hear your opinion about the solution for this task I am struggling to make. I am sure that is not the easiest way what I am trying to do, but I would love to accomplish this task using mathematics (I remember similar task when I was in High School, however now I can't do that same way).

  1. digit_sum

So, basically what I am trying to achieve is to represent an integer in the following shape:
n= 10^(i)n1+10^(i-1)n2+...+10^0*nj
where sum=n1+n2+...+n(j)

    while i<=(n_len) and i!=1:
        #Here is I can't really figure out the next iteration...
        #Maybe it's better to use exponent here
        return n, sum
        if i==1:
            sum+=n % (10**(i-1))
    return sum

print digit_sum(434)

Please, I am sure you guys know the solution. I won't be able to sleep unless I find the way :sleepy:


What you are looking for can be boiled down.

def digit_sum(n):
    s = 0
    # what must we start with?
    # ans: a modulo
    while n > 0:
        s += n % 10     # the last digit
        # and go with?
        n //= 10         # the remaining digits without it (edited)
    return s


Thank you!
This works great.
See below executing code that works in a case someone else want to solve this task old fashioned way.

def digit_sum(n):
    s = 0 
    while i>0:
        s+=n % 10     # the last digit
        print s
        n=n // 10       # the remaining digits without it
    return s
print digit_sum(4254)


Sorry for my typo. Please see the edit:

n //= 10


This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.