0

Getting sum of digits in a number with a while loop.

Code: num = 123 sum = 0 while n > 0: sum += n % 10 n //= 10 print(sum) Question: How do we get last digit to the left (1 in 123)? I understand how we get (3 + 2) but not (3+2+1). Can someone explain in a visible way? Thanks.

14th Feb 2021, 10:10 AM
Wilson Bol
Wilson Bol - avatar
4 Answers
+ 6
First it will get the remainder by using modulus operator (%) to a number by 10, in other words it will get the last digit. ▫️e.g. 123 % 10 ---> 3 Then after we get the last digit, we will use floor division (//) and divide it by 10 to remove the last digit. ▫️e.g. 123 // 10 ---> 12 Then repeat the process until we have no digits left or 0. __________________________ INPUT = 123 ℹ️---FIRST LOOP---ℹ️ 🔹123 % 10 ---> 3 (add to sum) 🔹123 // 10 ---> 12 (last digit '3' removed) 🔸sum is now 3 🔸n is now 12 ℹ️---SECOND LOOP---ℹ️ 🔹12 % 10 ---> 2 (add to sum) 🔹12 // 10 ---> 1 (last digit '2' removed) 🔸sum is now 5 🔸n is now 1 ℹ️---THIRD LOOP---ℹ️ 🔹1 % 10 ---> 1 (add to sum) 🔹1 // 10 ---> 0 🔸sum is now 6 🔸n is now 0 _______🔻BREAK🔻________ Since n is now 0 the while loop condition will become False and the loop will end or break. And the final value of n is 6. Therefore the sum of digits in 123 is 6. If this is still unclear, please feel free to ask. Thanks.
14th Feb 2021, 10:50 AM
noteve
noteve - avatar
+ 2
n= 123 sum = 0 while n > 0: sum += n % 10 n //= 10 print(sum)
14th Feb 2021, 10:28 AM
Atul [Inactive]
+ 1
Just write n instead of num in declaration or vice versa
14th Feb 2021, 10:29 AM
Atul [Inactive]
0
Cyan Great way of answering. I had to google how 1 is the remainder after 1 is divided by 10. Proof: dividend = (divisor x quotient) + remainder. 1 = (10 x 0) + 1
14th Feb 2021, 12:28 PM
Wilson Bol
Wilson Bol - avatar