Hi,

I have a hard time understanding how this function returns 10 (when digit_sum(1234)). Can any you please break it down for me?

Thanks,

Torben

Hi,

I have a hard time understanding how this function returns 10 (when digit_sum(1234)). Can any you please break it down for me?

Thanks,

Torben

Hi @tfsn,

Let’s focus on these two lines …

```
total += x % 10
x = x // 10
```

What do you think each one of them does?

Hi @appylpye ,

As far as I know ‘total’ will add/reassign the result of x % 10. The remainder of 1234 % 10 is 123.

123 = 123 // 10 is 12.

Is this correct? If it is, how can the function return 10 and not 12?

See Python Syntax: Arithmetic for a review of the `%`

operator. The result of `1234 % 10`

is actually `4`

, which is the value of the final digit of the number. During each iteration of the `while`

loop, you are adding the value of the final digit of `x`

to `total`

.

Also see Python Syntax: Two Types of Division. The `//`

operator, which is not explicitly discussed there, performs floor division, which discards the remainder. Therefore, when it is used to divide `x`

by `10`

, it gets rid of the final digit instead of yielding a `float`

number.

In effect, each iteration of your `while`

loop adds one of the digits of the number to `total`

.

*EDITED on April 8, 2018 for clarification*