Skip to content

Adding time and a half pay calculator algorithm to financial folder #12662

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Apr 17, 2025
40 changes: 40 additions & 0 deletions financial/time_and_half_pay.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""
Calculate time and a half pay
"""


def pay(hours_worked: float, pay_rate: float, hours: float = 40) -> float:
"""
hours_worked = The total hours worked
pay_rate = Ammount of money per hour
hours = Number of hours that must be worked before you recieve time and a half

>>> pay(41, 1)
41.5
>>> pay(65, 19)
1472.5
>>> pay(10, 1)
10.0
"""
# Check that all input parameters are float or integer
assert isinstance(hours_worked, (float, int)), (
"Parameter 'hours_worked' must be of type 'int' or 'float'"
)
assert isinstance(pay_rate, (float, int)), (
"Parameter 'pay_rate' must be of type 'int' or 'float'"
)
assert isinstance(hours, (float, int)), (
"Parameter 'hours' must be of type 'int' or 'float'"
)

normal_pay = hours_worked * pay_rate
over_time = max(0, hours_worked - hours)
over_time_pay = over_time * pay_rate / 2
return normal_pay + over_time_pay


if __name__ == "__main__":
# Test
import doctest

doctest.testmod()