filter() + simple program not outputting

Charles G Waldman cgw at fnal.gov
Mon Jul 26 17:47:15 EDT 1999


Joyce Stack writes:
 > Hello,
 > 
 > New to python but not to programming...can someone tell me why this
 > simple program is not outputting when i run from the BASH prompt....any
 > pointers would be helpful...thanking you in advance....
 > 
 > Joyce
 > 
 > 
 > #!/usr/bin/env python
 > 
 > def f(x):
 >         return x%2 != 0 and x%3 != 0
 >         filter(f, range(2, 25))
 >         f( )
 > 
 > 

Well, there are several reasons!  One is that you define a function
but never call it. 

You probably meant to say:

 > def f(x):
 >         return x%2 != 0 and x%3 != 0
 >
 > filter(f, range(2, 25))



having the "filter" inside the "def f" doesn't make much sense;
it will never be reached where it is (after a "return" statement).
I trust that you don't mean to be calling "f" recursively.

The final "f( )" makes no sense because f is defined as taking a
single argument.  Delete this line.

Finally, there's a difference between running in interactive mode and
running a python file as a script.  In interactive mode, values of
computed objects are printed by default.  In a script, they are not.
That is,  at the Python prompt,  entering "2+2" will result in "4"
being printed, but if you create a file "test.py" containing only the
line "2+2" and do "python test.py",  2+2 will be calculated but not
printed.   I believe that if you modify your example to something like:


 > def f(x):
 >         return x%2 != 0 and x%3 != 0
 >
 > print filter(f, range(2, 25))

you will get what you intended.

Hope this helps.





More information about the Python-list mailing list