On 12/08/15 17:07, D Wyatt wrote:
so I 'get' that -5**2 = -25 and (-5)**2 is 25, BUT if you write a functiondef sq(x): """ Output: sq returns the square of its input input x: a number (int or float) """ return x**2 and pass it a negative number it handles it as though the argument is in parentheses.
Of course it does. x**2 => (x)**2 If you assigned a value to x like this: x = -3 print x**2 You would expect it (I hope) to be treated as print (x)**2 would you not? That's what the function does. Otherwise the function would, effectively, have to do this, which would be very inconsistent. if x < 0: return -(x**2) else: return x**2 By passing a negative number (-3 say) into the function you are effectively putting it in parens - you are saying you want the square of -3 Neither are you passing in the string '-3' which then gets pre-pended to '**2' and then evaluated. You are passing in a single integer value. It's the same with the builtin pow() function >>> pow(-3, 2) 9 I'm explicitly telling Python I want the value -3 raised to the power 2. If I write -3**2 I'm telling Python to interpret the expression -3**2 according to its language rules - which it does as -(3**2).
Also, can someone please take me off moderated?
Done :-) -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor
