Skip to content

Commit dbf7ae5

Browse files
author
boraxpr
committed
bite 110
1 parent 233d534 commit dbf7ae5

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

110/division.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def divide_numbers(numerator, denominator):
2+
"""For this exercise you can assume numerator and denominator are of type
3+
int/str/float.
4+
Try to convert numerator and denominator to int types, if that raises a
5+
ValueError reraise it. Following do the division and return the result.
6+
However if denominator is 0 catch the corresponding exception Python
7+
throws (cannot divide by 0), and return 0"""
8+
try:
9+
numerator = int(numerator)
10+
denominator = int(denominator)
11+
except ValueError:
12+
raise ValueError
13+
try:
14+
return numerator/denominator
15+
except ZeroDivisionError:
16+
return 0
17+
18+
# divide_numbers(1,0)

110/test_division.py

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import pytest
2+
3+
from division import divide_numbers
4+
5+
6+
@pytest.mark.parametrize("numerator, denominator, expected", [
7+
(1, 2, 0.5),
8+
(8, 2, 4),
9+
# strings that look like ints are converted (casted) fine
10+
('3', '2', 1.5),
11+
# floats work too but when casted to int they are rounded down!
12+
(8.2, 2, 4),
13+
(1, 2.9, 0.5),
14+
])
15+
def test_divide_numbers_good_inputs(numerator, denominator, expected):
16+
assert divide_numbers(numerator, denominator) == expected
17+
18+
19+
@pytest.mark.parametrize("numerator, denominator", [
20+
# ignoring dict/set/list to keep it simple, those would actually
21+
# throw a TypeError when passed into int()
22+
(2, 's'),
23+
('s', 2),
24+
('v', 'w'),
25+
])
26+
def test_divide_numbers_raises_value_error(numerator, denominator):
27+
with pytest.raises(ValueError):
28+
divide_numbers(numerator, denominator)
29+
30+
31+
def test_divide_by_zero_does_not_raise_zero_division_exception():
32+
assert divide_numbers(10, 0) == 0
33+
34+
test_divide_by_zero_does_not_raise_zero_division_exception()
35+
test_divide_numbers_good_inputs
36+
test_divide_numbers_raises_value_error

0 commit comments

Comments
 (0)