Page 247 - Computer Science Class 11 With Functions
P. 247

On execution of Line 14, we initialise the sum of the digits (digitSum) as zero.
               On execution of Line 15:

              ○  If the number whose sum of digits we want to find is zero, the condition num > 0 fails at the beginning of the
                execution of the while statement. In this case, the execution of the while statement finishes without executing the
                body of the while statement even once.

              ○ If the condition num > 0 yields True, it will execute the body of the while statement from the beginning.
               On execution of line 16, we compute the remainder (num % 10) by dividing by 10 and adding it to the digit sum
              accumulated.
               On execution of line 17, the digit at the unit's place is now over, we drop it by dividing num (integer division) by 10.
               Note that the number you get when you divide the original number by 10 still has all the relevant information. It has
              all the digits except for the one at the unit's place, which we have already taken into account. Also, the digit that was
              at the 10's position in the original number is now at the unit position in the number that is obtained by dividing the
              original number by 10.
               So, we now need to find the sum of the digits of the updated value of num and add it to the sum accumulated in
              digitSum.
               Line 15, Finding the digit at the unit's place, adding it to the sum accumulated in digitSum, and updating the value
              of num continues as long as num>0.
               When num becomes 0, the control leaves the while statement, and the function sumOfDigits() returns the
              computed value of the sum of digits (digitSum) at line 23.
               On execution of line 24, the sum of digits is displayed, and the program comes to an end.

            Program 10.5 Write a function sumOfDigits(num) that computes value of the sum of digits.

              01 def sumOfDigits(num):
              02     '''
              03     Objective: To compute sum of digits of a number
              04     Input Parameter: num - numeric
              05     Return Value: numeric
              06     '''
              07     '''
              08     Approach:
              09         Ignore the sign of the number. Initialize digit Sum to
              10         zero. Extract digits one by one beginning unit's
              11         place and keep on adding it to digit sum.
              12     '''
              13     num = abs(num)
              14     digitSum = 0
              15     while num > 0:
              16         digitSum += (num % 10)
              17         num = num // 10
              18     return digitSum
              19 # main program segment
              20 # Objective: To compute sum of digits of a user-provided input
              21 num = int(input('Enter a number: '))
              22 digitSum = sumOfDigits(num)
              23 print('Sum of digits of', num, 'is', digitSum)

            Sample Output:
             >>> Enter a number: 4321
                  Sum of digits of 4321 is 10




                                                                                              Looping in Python  245
   242   243   244   245   246   247   248   249   250   251   252