472,980 Members | 2,129 Online

15 Exercises to Know A Programming Language

I am trying to improve my Python skills through some exercises.
Currently I am working on Larry's "15 exercises to know a programming
language " (http://www.knowing.net/
exercise is this:

"Write a program that takes as its first argument one of the words
'sum,' 'product,' 'mean,' or 'sqrt' and for further arguments a
series of numbers. The program applies the appropriate function to
the series."

My solution so far is this:

http://dpaste.com/13469/

I would really like some feedback. Is this a good solution? is it
efficient? robust? what could be improved? any not looking for a
revised solution, hints on what to improve are also very welcome.

Martin

Jul 3 '07 #1
5 1848
On Tue, 03 Jul 2007 09:58:16 +0000, Martin wrote:
"Write a program that takes as its first argument one of the words
'sum,' 'product,' 'mean,' or 'sqrt' and for further arguments a
series of numbers. The program applies the appropriate function to
the series."

My solution so far is this:

http://dpaste.com/13469/

I would really like some feedback. Is this a good solution? is it
efficient? robust? what could be improved? any not looking for a
revised solution, hints on what to improve are also very welcome.
Don't use `eval()` if it is not absolutely necessary. Especially if the
input comes from a user it's a security hole. `float()` is the function
to use here.

`mean()` does not work as you try to divide a list by a number.

Ciao,
Marc 'BlackJack' Rintsch
Jul 3 '07 #2
On Jul 3, 12:25 pm, Marc 'BlackJack' Rintsch <bj_...@gmx.netwrote:
On Tue, 03 Jul 2007 09:58:16 +0000, Martin wrote:
"Write a program that takes as its first argument one of the words
'sum,' 'product,' 'mean,' or 'sqrt' and for further arguments a
series of numbers. The program applies the appropriate function to
the series."
My solution so far is this:
http://dpaste.com/13469/
I would really like some feedback. Is this a good solution? is it
efficient? robust? what could be improved? any not looking for a
revised solution, hints on what to improve are also very welcome.

Don't use `eval()` if it is not absolutely necessary. Especially if the
input comes from a user it's a security hole. `float()` is the function
to use here.

`mean()` does not work as you try to divide a list by a number.

Ciao,
Marc 'BlackJack' Rintsch
Thanks for the feedback. I have posted a revised version here (http://
dpaste.com/13474/) where mean works. The reason I use eval is I want
it to work for complex numbers too, but I guess i could check for the
presence of a "j" in the arguments instead.

Martin

Jul 3 '07 #3
"Write a program that takes as its first argument one of the words
'sum,' 'product,' 'mean,' or 'sqrt' and for further arguments a
series of numbers. The program applies the appropriate function to
the series."
My solution so far is this:
>http://dpaste.com/13469/
I would really like some feedback. Is this a good solution? is it
efficient? robust? what could be improved? any not looking for a
revised solution, hints on what to improve are also very welcome.
Don't use `eval()` if it is not absolutely necessary. Especially if the
input comes from a user it's a security hole. `float()` is the function
to use here.

`mean()` does not work as you try to divide a list by a number.

Thanks for the feedback. I have posted a revised version here (http://
dpaste.com/13474/) where mean works. The reason I use eval is I want
it to work for complex numbers too, but I guess i could check for the
presence of a "j" in the arguments instead.

Hi, if I invoke your program without arguments an uncaught exception
is raised. Wouldn't it be better to inform the user that an argument
is expected?

See http://docs.python.org/tut/node10.html
Jul 3 '07 #4
On Jul 3, 7:58 pm, Martin <martin.clau...@gmail.comwrote:
I am trying to improve my Python skills through some exercises.
Currently I am working on Larry's "15 exercises to know a programming
language " (http://www.knowing.net/
exercise is this:

"Write a program that takes as its first argument one of the words
'sum,' 'product,' 'mean,' or 'sqrt' and for further arguments a
series of numbers. The program applies the appropriate function to
the series."

My solution so far is this:

http://dpaste.com/13469/

I would really like some feedback. Is this a good solution? is it
efficient? robust? what could be improved? any not looking for a
revised solution, hints on what to improve are also very welcome.

Martin
sum is a builtin function in Python 2.3 and later. You could do
something like this:

try:
sum
except NameError:
def sum(args):

Tested with 2.5 back to 2.1, and 1.5.2 :-)

Jul 3 '07 #5
On Jul 3, 1:47 pm, John Machin <sjmac...@lexicon.netwrote:
On Jul 3, 7:58 pm, Martin <martin.clau...@gmail.comwrote:
I am trying to improve my Python skills through some exercises.
Currently I am working on Larry's "15 exercises to know a programming
language " (http://www.knowing.net/
exercise is this:
"Write a program that takes as its first argument one of the words
'sum,' 'product,' 'mean,' or 'sqrt' and for further arguments a
series of numbers. The program applies the appropriate function to
the series."
My solution so far is this:
http://dpaste.com/13469/
I would really like some feedback. Is this a good solution? is it
efficient? robust? what could be improved? any not looking for a
revised solution, hints on what to improve are also very welcome.
Martin

sum is a builtin function in Python 2.3 and later. You could do
something like this:

try:
sum
except NameError:
def sum(args):

Tested with 2.5 back to 2.1, and 1.5.2 :-)
Thanks John and Daniel. My revised version now uses sum(). I have
started to implement some basic error checking and validation.

Martin

Jul 4 '07 #6

This thread has been closed and replies have been disabled. Please start a new discussion.