[Tutor] Positional Arguments
Emile van Sebille
emile at fenx.com
Fri Nov 1 23:47:08 CET 2013
The traceback shows:
> TypeError: calcandprint() missing 2 required positional arguments:
> 'hrswrkd' and 'payrate'
and the definition of calcandprint is
> def calcandprint (hrswrkd, payrate):
which shows it requiring two parameters: 'hrswrkd' and 'payrate'
so the proper way to call the function would be:
calcandprint (86, 11.50) which would (presumably) calculate and print
the result of having worked 86 hours at a payrate of 11.50/hr
But-I-didn't-read-all-your-code-ly y'rs,
Emile
On 11/1/2013 11:43 AM, Jenny Allar wrote:
> 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 at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list