15 Exercises to Know A Programming Language

M

Martin

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/
PermaLink,guid,f3b9ba36-848e-43f8-9caa-232ec216192d.aspx). The first
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
 
M

Marc 'BlackJack' Rintsch

"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
 
M

Martin

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
 
D

Daniel Nogradi

"Write a program that takes as its first argument one of the words
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
 
J

John Machin

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/
PermaLink,guid,f3b9ba36-848e-43f8-9caa-232ec216192d.aspx). The first
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):
return reduce(operator.add, args)

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

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):
return reduce(operator.add, 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top