File tree 2 files changed +54
-0
lines changed
2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change
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)
Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments