--- Danny Yoo <[EMAIL PROTECTED]> wrote: > > #!/usr/bin/python > > > > import math > > > > print '''This program calculates the lenght of the > > hypotenuse of a right triangle > > given the lenghts of the two legs as > > parameters.\n''' > > > > leg1 = input('Enter the first leg of the triangle: > ') > > leg2 = input('Enter the second leg of the > triangle: ') > > > Hi Hoffmann, > > Although this works, the use of input() is a little > less safe than using > raw_input(), and input gives slightly unhappy error > messages on certain > kinds of input. For example: > > ###### > >>> input("number? ") > number? four > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "<string>", line 1, in <module> > NameError: name 'four' is not defined > ###### > > That is, certain kinds of input will give us things > like NameError. > > > But here's another example where input() can do > funny things: > > ###### > >>> def test(): > ... x = input("x?: ") > ... y = input("y?: ") > ... print x, y > ... > >>> test() > x?: 3 > y?: x > 3 3 > ###### > > Although this is "cute", it shows that it's also > terribly hard to figure > out what's going on with input() sometimes. *grin* > > So because of this, I'd recommend using raw_input() > instead: even though > you have to do a little more work to get numbers out > of it, it's > ultimately a bit saner and more reliable to use than > input(). > > > > > def hypotenuse(x, y): > > result = math.sqrt(x**2 + y**2) > > return result > > There's no need to do the assignment to 'result' > here. We can return the > value straightaway: > > ################################# > def hypotenuse(x, y): > return math.sqrt(x**2 + y**2) > ################################# > > > > Although it's "obvious", it might also help to add > some kind of > documentation string explaining hypotenuse, and what > it takes in > and returns. Something like: > > ################################################################### > def hypotenuse(x, y): > """hypotenuse: number number -> number > hypotenuse() returns the length of the > hypotenuse of a right > triangle with legs of length x and y.""" > # ... rest of function body > ################################################################### > > might seem like overkill for such a simple function, > but the habit is a > good one. > > > In an ideal world, all functions would have some > kind of comment like > that, to communicate the human intent to the reader. > I admit that I often > just hack functions up without saying what they > mean... but I do feel > guilty afterwards. *grin* > > > I hope this helps! > Hi Danny,
I did like your comments about input and raw_input. What about if I use on my program: leg1 = int( raw_input('Enter the first leg of the triangle: ') ) leg2= int( raw_input('Enter the second leg of the triangle: ') ) What do you think? This is better/safer, right? Thanks, Hoffmann __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor