[Tutor] Codehelp: confused by the output in IDLE

Wolfram Kraus kraus at hagen-partner.de
Fri Dec 16 12:45:21 CET 2005


vikas mohan wrote:
> Hi again!
>  
> The following is a piece of code that I have written:
> 
> def funcA(x): # function describiing the oddness or eveness of an x number
>   if x%2 == 0:
>     print x, "is even"
>   else:
>     print x, "is odd"
>    
> def funcB(y): # function describiing the oddness or eveness of an y number
>   if y%2 ==0:
>     print y, "is even"
>   else:
>     print y, "is odd"
>    
> # no more functions after this line    
> 
>     *x=input("Please type a number: ")
>     print x*
> 
>     *y=input("Please type another number: ")
>     print y*
> 
>     *if x>y:
>         print x,("is greater than"),y
>     else:
>         print y,("is greater than"),x*
> 
>     *if y and x >=0:
>         print ("Both are positive numbers!")*
> 
>     print funcA(x)
>     print funcB(y)
> 
>  And this is the output in IDLE after execution:
> 
>     *Please type a number: 5
>     5
>     Please type another number: 10
>     10
>     10 is greater than 5
>     Both are positive numbers!
>     5 is odd
>     None
>     10 is even
>     None*
> 
>  
> I don't understand why I am getting 2 instances of "None" in the output, 
> when it has not been programmed by me. What is going on?
>  
> Pls. advice
>  
> Thanks again,
> V

You print inside your function (print x, "is odd") and you print the 
result of your function (print funcA(x)). As your function doesn't 
explicitly return a value, you get None, see: 
http://www.python.org/doc/2.4.2/tut/node6.html#SECTION006600000000000000000
So either just call the function or return the string from your function.

HTH,
Wolfram



More information about the Tutor mailing list