1
1
"""
2
2
Calculate time and a half pay
3
-
4
3
"""
5
4
6
5
@@ -9,6 +8,7 @@ def pay(hours_worked: float, pay_rate: float, hours: float = 40) -> float:
9
8
hours_worked = The total hours worked
10
9
pay_rate = Ammount of money per hour
11
10
hours = Number of hours that must be worked before you recieve time and a half
11
+
12
12
>>> pay(41, 1)
13
13
41.5
14
14
>>> pay(65, 19)
@@ -17,23 +17,20 @@ def pay(hours_worked: float, pay_rate: float, hours: float = 40) -> float:
17
17
10.0
18
18
"""
19
19
# Check that all input parameters are float or integer
20
- assert type (hours_worked ) is float or type (hours_worked ) is int , (
20
+ assert isinstance (hours_worked , float ) or isinstance (hours_worked , int ) (
21
21
"Parameter 'hours_worked' must be of type 'int' or 'float'"
22
22
)
23
- assert type (pay_rate ) is float or type (pay_rate ) is int , (
24
- "Parameter 'hours_worked ' must be of type 'int' or 'float'"
23
+ assert isinstance (pay_rate , float ) or isinstance (pay_rate , int ) (
24
+ "Parameter 'pay_rate ' must be of type 'int' or 'float'"
25
25
)
26
- assert type (hours ) is float or type (hours ) is int , (
27
- "Parameter 'hours_worked ' must be of type 'int' or 'float'"
26
+ assert isinstance (hours , float ) or isinstance (hours , int ) (
27
+ "Parameter 'hours ' must be of type 'int' or 'float'"
28
28
)
29
29
30
30
normal_pay = hours_worked * pay_rate
31
- over_time = hours_worked - hours
32
- # Another way
33
- """over_time_pay = ((over_time * ((over_time + (over_time ** 2) ** 0.5) / (2 * over_time))) / 2) * pay_rate"""
34
- over_time_pay = (max (0 , over_time ) / 2 ) * pay_rate
35
- total_pay = normal_pay + over_time_pay
36
- return total_pay
31
+ over_time = max (0 , hours_worked - hours )
32
+ over_time_pay = over_time * pay_rate / 2
33
+ return normal_pay + over_time_pay
37
34
38
35
39
36
if __name__ == "__main__" :
0 commit comments