How do I resolve this TypeError
TypeError: unsupported operand type(s) for *: 'float' and 'function'
Here is my code:
#calculate overtime pay
def overtime_pay(weekly_pay, regular_rate, overtime_hrs ):
overtime_p = weekly_pay + ((regular_rate*1.5)*overtime_hrs)
print('Overtime pay for ' + total_hrs_per_wk + 'hours worked' + 'is: \t', overtime_pay)
return overtime_p
Did you mean for the last variable here to be overtime_p
?
print('Overtime pay for ' + total_hrs_per_wk + 'hours worked' + 'is: \t', overtime_pay)
Your code snippet was missing some vital bits of information such as "total_hrs_per_wk" along with supporting code to call this function. So, I used a bit of artistic license to fill in the missing bits. Following is a snippet of code that utilizes your overtime function along with some revisons.
#calculate overtime pay
def overtime_pay(weekly_pay, regular_rate, overtime_hrs ):
total_hrs_per_wk = float(weekly_pay / regular_rate + overtime_hrs) # This variable was missing - added it
overtime_p = weekly_pay + ((regular_rate*1.5)*overtime_hrs)
print('Total pay with overtime for ', total_hrs_per_wk, 'hours worked is: \t', overtime_p) # Made the last variable "overtime_p" instead of the function name
return overtime_p
# Created the following code to execute the function with floating point variables
weekly_pay = float(input("Enter weekly pay: "))
regular_rate = float(input("Enter worker rate: "))
overtime_hrs = float(input("Enter overtime hours: "))
overtime_pay(weekly_pay, regular_rate, overtime_hrs)
Here are some of the things to take away from the code snippet.
Give that a try.
Additional notes.
In response to the comment about having "total_hrs_per_week" being a function that returns a value instead of being a variable, following is a revised code snippet that is equivalent to the above code snippet but calls a function named "total_hrs_per_wk" and uses the returned value.
# Have total weekly hours as a function instead of a variable
def total_hrs_per_wk(pay, reg_rate, total_hrs):
return float(total_hrs - pay / reg_rate)
#calculate overtime pay
def overtime_pay(weekly_pay, regular_rate, overtime_hrs ):
total_hr = float(weekly_pay / regular_rate + overtime_hrs)
overtime_p = weekly_pay + ((regular_rate*1.5)*overtime_hrs)
print('Total pay with overtime for ', total_hr, 'hours worked is: \t', overtime_p) # Made the last variable "overtime_p" instead of the function name
return overtime_p
# Created the following code to execute the function with floating point variables
weekly_pay = float(input("Enter weekly pay: "))
regular_rate = float(input("Enter worker rate: "))
overtime_hrs = float(input("Enter overtime hours: "))
overtime_pay(weekly_pay, regular_rate, total_hrs_per_wk(weekly_pay, regular_rate, (40 + overtime_hrs))) # Last parameter will be the result of a function call
Testing resulted in the same values displaying on the terminal. As noted earlier, this would just be one of many ways to get the same result.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.