def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False
print sum10(7, 3)
print sum10(-13, -17)
print sum10(3, 8)
the result is:
True
True
None
not what I expected:
True
True
False
any idea?
Your code
def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False
is equivalent to
def sum10(a, b):
    if sum([a, b]) % 10 == 0: 
        return True; return False
so return False is never evaluated.
Some (of the probably endless) alternatives:
    if sum([a, b]) % 10 == 0: 
        return True
    return False
or
    return sum([a, b]) % 10 == 0
or
    return True if sum([a, b]) % 10 == 0 else False
or
    return False if (a+b) % 10 else True
or (the most readable IMHO)
    return not (a + b) % 10
                        This is what you want.
def sum10(a, b):
    return sum([a, b]) % 10 == 0
Also the ternary If in Python works like this
<True Statment> if <Conditional Expression> else <False Statement>
eg
True if sum([a,b]) % 10 == 0 else False
Might i also recommend using the plus operator?
True if (a+b) % 10 == 0 else False
                        If you want to have if-else one liners, they should be written like this:
return True if sum([a, b]) % 10 == 0 else False
Note the absence of two points in that one liner.
I think that the return False is never executed due to it is into the if, not outside it.
So, when you take a true in the if condition, you are executing return True, but never the second statement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With