Looking for a slick way to classify relationship between two numbers, without tons of if/else

Paul Rubin http
Tue Jul 7 09:38:50 CEST 2009


palewire <ben.welsh at gmail.com> writes:
> In my application, I'd like to have a function that compares two values,
> either of which may be null, and then classify the result depending on
> whether one is higher or lower than the other.

Didn't we just have a huge thread about that?  Using a special null
value is often (not always) a code smell.  But anyway (untested):

    def compare(a,b):
       if a is None and b is None:  # I'm guessing you meant this
           return "No data"
       if a == b:
           return "Stayed the same" if a != 0 else "Never had"
       elif a < b:
           return "gained"
       else:
           # we know here that a > b
           return "Lost some" if b > 0 else "Lost all"

I don't know what you intended to do in the case where exactly one of
(a,b) is None, so I'll leave that to you.



More information about the Python-list mailing list