Skip to content

Module 6 Assignment 4.6 Answer

 

4.6 Write a program to prompt the user for hours and rate per hour using input to compute gross pay. Pay should be the normal rate for hours up to 40 and time-and-a-half for the hourly rate for all hours worked above 40 hours. Put the logic to do the computation of pay in a function called computepay() and use the function to do the computation. The function should return a value. Use 45 hours and a rate of 10.50 per hour to test the program (the pay should be 498.75). You should use input to read a string and float() to convert the string to a number. Do not worry about error checking the user input unless you want to – you can assume the user types numbers properly. Do not name your variable sum or use the sum() function.

Pay 498.75

Correct Python Code

# Function to compute pay based on hours and rate
def computepay(h, r):
    if h > 40:
        overtime_hours = h - 40
        overtime_pay = overtime_hours * (r * 1.5)
        regular_pay = 40 * r
        total_pay = regular_pay + overtime_pay
    else:
        total_pay = h * r
    return total_pay

# Prompt user for input
hrs = float(input("Enter Hours: "))
rate = float(input("Enter Rate per Hour: "))

# Compute pay using the function
p = computepay(hrs, rate)

# Display output
print("Pay", p)

Expected Output

Enter Hours: 45
Enter Rate per Hour: 10.50
Pay 498.75

Explanation

  1. Define computepay(h, r)
    • If h > 40:
      • Regular pay for 40 hours → 40 * r
      • Overtime pay for extra hours → (h - 40) * (r * 1.5)
      • Total pay = regular pay + overtime pay
    • If h ≤ 40, calculate normal pay → h * r
  2. Prompt user for input
    • Convert user input (input()) to float for calculations.
  3. Call computepay(hrs, rate) and store the returned value in p.
  4. Print the final pay amount.

Why This Code is Correct

✅ Handles both normal and overtime pay correctly.
✅ Uses a function (computepay()) to separate logic from input handling.
✅ Correctly converts user input from string to float.
✅ Produces expected output matching Pay 498.75.