How to divide a number in Python
The challenge
Your task is to create functionisDivideBy
(or is_divide_by
) to check if an integer number is divisible by each out of two arguments.
A few cases:
(-12, 2, -6) -> true
(-12, 2, -5) -> false
(45, 1, 6) -> false
(45, 5, 15) -> true
(4, 1, 4) -> true
(15, -5, 3) -> true
Test cases
Test.describe("Basic Tests")
Test.it("should pass basic tests")
Test.assert_equals(is_divide_by(-12, 2, -6), True)
Test.assert_equals(is_divide_by(-12, 2, -5), False)
Test.assert_equals(is_divide_by(45, 1, 6), False)
Test.assert_equals(is_divide_by(45, 5, 15), True)
Test.assert_equals(is_divide_by(4, 1, 4), True)
Test.assert_equals(is_divide_by(15, -5, 3), True)
Understanding how to solve this
To resolve this problem, we need to understand how to find if a number can be divided without a remainder in Python. This is similar to other mathematical operations you might perform in Python, like finding the intersection of two arrays or converting RGB to Hex.
For this we will use Python’s modulo operator
, (%
):
10 % 5 # 0
# if we divide 10 by 5, there is no remainder
10 % 3 # 1
# if we divide 10 by 3, there is a remainder of `1`
Therefore, if we say 10 % 5 == 0
, the expression will equal True
, while the 10 % 3 == 0
will equal False. This is because there is a remainder of 1
in the second instance.
The solution in Python
Option 1:
def is_divide_by(number, a, b):
# if can divide without remainder
if number % a ==0 and number % b ==0:
return True
else:
return False
Option 2:
def is_divide_by(number, a, b):
return not (number%a or number%b)
Option 3:
def is_divide_by(n, a, b):
return n%a == 0 == n%b