[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