+ 2

Practice 27.2 Summing Digits. Why does my code not work? Please, help

You need to calculate and output the sum all digits of the input number. Sample Input: 643 Sample Output: 13 Explanation: The sum of the digits of 643 is 6+4+3 = 13. Below my solution. The system displays - no output. Code: n = int(input()) sum = 0 while n >= 0: remain = n % 10 n //= 10 sum += remain print(sum)

12th May 2021, 9:17 AM
Елена Леващева
Елена Леващева - avatar
26 Answers
+ 2
I have tried it in two ways and they return the same result whatever the length of the input. https://code.sololearn.com/cwYmXo3T2YHL/?ref=app
12th May 2021, 10:32 AM
Endalk
Endalk - avatar
+ 2
Thank you very much I copied all your codes to learn. Maybe l will understand the issue when i have more knowledge.
12th May 2021, 10:40 AM
Елена Леващева
Елена Леващева - avatar
+ 2
I think I know why I extended my version with a list. I did it so I could see the input numbers along with the calculated output and make sure that the output was correct with long ranges of numbers, and as it passed all test cases, I didn't change it to a simpler version.
12th May 2021, 11:54 AM
Jan
Jan - avatar
+ 2
Thanks Quantum very much I have copied your code I woul like to try it too.
12th May 2021, 12:25 PM
Елена Леващева
Елена Леващева - avatar
+ 2
Quantum thanks so many much, I am so glad finally to find out how to do it.
12th May 2021, 2:28 PM
Елена Леващева
Елена Леващева - avatar
+ 2
Yaroslav Vernigora Yes, i did a little bit
13th May 2021, 6:55 AM
Елена Леващева
Елена Леващева - avatar
+ 2
I showed you the online version, where you can see what is happening with your program step by step
13th May 2021, 8:38 AM
Yaroslav Vernigora
Yaroslav Vernigora - avatar
+ 2
Calvin Thomas thank you very much, it helhed a lot. It teached me the other possible solutions and that is the most important.
14th May 2021, 1:18 AM
Елена Леващева
Елена Леващева - avatar
+ 1
Thanks Simba. I changed the >= to the > and this has worked n = int(input()) sum = 0 while n > 0: remain = n % 10 n //= 10 sum += remain print(sum)
12th May 2021, 9:46 AM
Елена Леващева
Елена Леващева - avatar
+ 1
Did that simple while loop pass all test cases, because when I made it, I had to extend the code to make it work properly with a huge range of digits.🤔
12th May 2021, 10:07 AM
Jan
Jan - avatar
+ 1
I still do not understand the solution. Test 1. The input - 76789. The output - 37. Below my manual check of the code: 1 iteration. remain = 76789%10=9 n = 76789//10=7678 sum = 0+9 2 iteration remain=7678%10=8 n=7678//10=767 sum=9+8=17 3 iteration remain =767%10=7 n=767//10=76 sum=17+7=24 4 iteration remain = 76%10=6 n=76//10=7 sum=24+6=30 5 iteration remain = 7%10=7 n=7//10=0 sum=30+7=37 Uf, hard work.
12th May 2021, 10:19 AM
Елена Леващева
Елена Леващева - avatar
+ 1
Thank you everyone again. I got it. There was a mistake in my manual above calculation. So now I know.
12th May 2021, 10:49 AM
Елена Леващева
Елена Леващева - avatar
+ 1
The code is right, check your explanation, after 3th iteration n = 76 (right) But your n input for the 4th iteration is only 6 , but has to be 76. The putput then will be 6. „ 3 iteration remain =767%10=7 n=767//10=76 sum=17+7=24 4 iteration remain = 76%10=6 n=6//10=0 „
12th May 2021, 11:19 AM
Angela
Angela - avatar
+ 1
Thanks Angela a lot. You helped very much.
12th May 2021, 12:22 PM
Елена Леващева
Елена Леващева - avatar
+ 1
Елена Леващева Just remember to add the output of the list along with the sum of the list, then you can make sure, that the output is correct, especially with long ranges of numbers. Somebody would probably call my code unneccessary, because of the list.
12th May 2021, 1:17 PM
Jan
Jan - avatar
+ 1
Thanks again Quantum and could you kindly explain also how you insert the above my name reference in your post? I failed to find the way.
12th May 2021, 1:42 PM
Елена Леващева
Елена Леващева - avatar
+ 1
don't thank me... Visualize your code execution (Python, Java, C, C++, JavaScript, Ruby) https://pythontutor.com
12th May 2021, 8:05 PM
Yaroslav Vernigora
Yaroslav Vernigora - avatar
+ 1
Yaroslav Vernigora 👍👍✊✊ but why "don't thank me..." ?
13th May 2021, 5:06 AM
Елена Леващева
Елена Леващева - avatar
+ 1
Yaroslav Vernigora When I work on something, I always create a bunch of outputs from the beginning and to the end of the program. Then I can follow the process during runtime, and it makes it a hole lot easier to localize why the program doesn't behave as expected if the final output is wrong. It works for me, but it probably won't work for everybody, as they would get confused of all those outputs of loops and lists etc.
13th May 2021, 8:06 AM
Jan
Jan - avatar
+ 1
depending on the programming language (for example, in Javascript, the browser itself has a built-in "developer console" tool, where you can do line-by-line debugging of your program) and the tools you work with (for example, IDE). you have the ability to execute the code line by line
13th May 2021, 8:36 AM
Yaroslav Vernigora
Yaroslav Vernigora - avatar