Hi everyone, I'm onto my next assignment and I think I have the basics together, but I'm having issues passing values from one function to another. I'm using Python 3.3.2 on Windows 7 and below is my assignment and code with the error that's got me hung up.
Thanks in advance for your help. Assignment: 6. Assignment (after Chapter 6) Write a payroll program that pays time and a half for anything over 40 hours. This should have 3 functions in addition to main. 1. The first function asks the user how many total hours were worked and the pay rate and returns this information to main. These values must be validated. Hours worked must be at least 8 and no more than 86. Pay rate cannot be less than $7.00 or more than $50.00. 2. The second function calculates the regular hours and overtime hours and returns this information to main. A person might work less than 40 hours so you must allow for that situation. 3. The third function calculates the regular pay, (regular hours times pay rate); overtime pay, (overtime hours times overtime pay rate) and the total pay and returns this information to main. 4. Main will then display this information on the screen like the sample below. (Values will have to be passed and returned). The output should look something like the following: Payroll Information Pay rate $10.00 Regular Hours 40 Overtime hours 20 Regular pay $400.00 Overtime pay $300.00 Total Pay $700.00 My code: #This program calculates pay for time and a half for hours worked over 49. #This program uses three functions in addition to main to accomplish the task. def main(): print() print("This program calculates your payroll information.") print() gethours() #Call the function that gets the hours worked payrate print() calcandprint() # Call the function that calculates and prints the information calc_pay() # Call the function that calculates the total pay #This function asks for and accepts the hours worked. # #Variable Type Purpose #hrswrkd int hold for number of hours worked #payrate int hold for rate of pay per hour def gethours(): print('Please enter the number of hours worked.') hrswrkd=int(input('The number must be at least 8 and no more than 86. ')) print() while hrswrkd < 8 or hrswrkd > 86: #Validate the number of hours worked print('Error --- The number of hours worked must be no less than 8 and no more than 86.') hrswrkd=int(input('Please try again. ')) print() print('Please enter the rate of pay.') payrate=int(input('The number must be at least $7.00 and no more than $50.00. ')) while payrate < 7.00 or payrate > 50.00: #Validate the rate of pay print('Error --- The rate of pay must be more than $7.00 and no more than $50.00. ') print() return hrswrkd, payrate # Return values to main function #This function calculates the number of straight time hours and over time hours # and prints the information. # #Variable Type Purpose #strthrs int hold for hours paid at straight time #overhrs int hold for hours paid at time and a half # def calcandprint (hrswrkd, payrate): if hrswrkd <= 40: calc_pay(hrswrkd, payrate) print('You have worked', hrswrkd, 'hours paid in straight time for this pay period.') print('You have worked 0 hours paid in overtime pay for this pay period.') else: calc_pay(hrswrkd, payrate) print('You have worked 40 hours paid in straight time for this pay period.') print('You have worked', hrswrkd - 40, 'hours paid in overtime pay for this pay period.') return hrswrkd, payrate def calc_pay(hrswrkd, payrate): # #This function calculates the pay for hours worked earning straight time pay and #pay for hours worked earning overtime pay, and caclulated the total pay. #This function also returns the information to main. # #Variable Type Purpose #regpay int hold for regular time pay #overtimepay int hold for overtime pay #totalpay int hold for total pay for time period # if hrswrkd <= 40: regpay=hrswrkd * payrate overtimepay=0 else: overtimepay=(hrswrkd-40) * (payrate * 1.5) regpay=40 * payrate totalpay=regpay+overtimepay return regpay, overtimepay, totalpay print() print(' Payroll Information') print('Pay Rate: ', format(payrate, '.2f')) print('Regular Hours: ', format(regpay // payrate, '.2f')) print('Overtime Hours: ', format(overtimepay // (payrate * 1.5), '.2f')) print('Regular Pay: ', format(regpay, '.2f')) print('Overtime Pay: ', format(overtimepay, '.2f')) print('Total Pay: ', format(totalpay, '.2f')) main() Error: Traceback (most recent call last): File "C:\", line 93, in <module> main() File "C:\", line 15, in main calcandprint() # Call the function that calculates and prints the information TypeError: calcandprint() missing 2 required positional arguments: 'hrswrkd' and 'payrate' Again, thank you. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor