mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-04-22 13:47:37 +00:00
* Create time&half-pay.py * Update time&half-pay.py * Update time&half-pay.py * Rename time&half-pay.py to time_and_half_pay.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update time_and_half_pay.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update time_and_half_pay.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update time_and_half_pay.py * Update time_and_half_pay.py * Update time_and_half_pay.py --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Maxim Smolskiy <mithridatus@mail.ru>
41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
"""
|
|
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 = Amount of money per hour
|
|
hours = Number of hours that must be worked before you receive 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()
|