On Tue, Dec 10, 2013 at 10:39:34AM +0100, Rafael Knuth wrote:

> def DigSum (integer):
>     s = 0
>     while integer != 0:
>         integer, remainder = divmod(integer, 10)
>         s += remainder
>     print(s)

A thought comes to mind... an very important lesson is to learn the 
difference between return and print, and to prefer return.

You have written a function that calculates the digit sum. But it is not 
*reusable* in other functions, since it cannot do anything but *print* 
the digit sum. What if you want to store the result in a variable, and 
print it later? Or print it twice? Or put it in a list? Or add one to 
it? You're screwed, the function is no use to you at all.

This is because the function does *two things*, when it should do one. 
First it calculates the digit sum, and then it prints it.

My advice is, (nearly) always use return, not print, inside functions. 
Once you return a result, it is easy to print it if you so desire:

print(digit_sum(23))


Or do anything else:

x = digit_sum(42952)
y = digit_sum(1032897) + digit_sum(8234)
z = [1, 2, digit_sum(99742), 3]


but you can't do anything *but* print if your function automatically 
calls print.



-- 
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to