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