On 6/21/2012 11:42 PM, Xander Solis wrote:
Hello Python list,

Noob here with a newbie question. I'm reading and working on the
exercise of the book, Learn Python the Hard way 2.0. When I use this
code, I get "None" on the output. My question is why does this happen?

None is the default return value for python-coded functions and python prints the value of expressions in interactive mode. Hmmm. But you seem to be running in batch mode. But where is 7.5 from. You must be doing more than shown.

Regardless, in my opinion, instead of printing, the function should return the computed value. You can then print the returned value. Real software should generally work that way. If nothing else, so you can automate tests instead of checking screen output.

def get_numbers(first_num, second_num, operator):

     if operator == 'add':
         print first_num + second_num
     elif operator == 'minus':
         print first_num - second_num
     elif operator == 'divide':
         print first_num / second_num
     elif operator == 'multiply':
         print first_num * second_num

print "%r" % (get_numbers(1, 2, 'minus'))
print "%r" % (get_numbers(1+3, 2+9, 'add'))
print "%r" % (get_numbers(10, 2, 'divide'))

Output:

C:\code\python>ex19.py
-1
None
15
None
5
None
7.5

--
Terry Jan Reedy



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to