[Tutor] Complications Take Two (Long) Frustrations.

Steven D'Aprano steve at pearwood.info
Sat Aug 22 09:00:55 CEST 2015


On Fri, Aug 21, 2015 at 11:29:52PM +0200, Roel Schroeven wrote:
> Joel Goldstick schreef op 2015-08-21 23:22:
> >so:
> >    print -max(-A, -B)
> 
> That's what I mean, yes. I haven't tried it, but I don't see why it 
> wouldn't work.

It won't work with anything which isn't a number:

py> min("hello", "goodbye")
'goodbye'


But the max trick fails:

py> -max(-"hello", -"goodbye")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: bad operand type for unary -: 'str'


If you want to write your own min without using the built-in, there is 
only one correct way to do it that works for all objects:

def min(a, b):
    if a < b: return a
    return b

Well, more than one way -- you can change the "a < b" to "a <= b" if you 
prefer. Or reverse the test and use >, or similar, but you know what I 
mean.

-- 
Steve


More information about the Tutor mailing list