Write a payroll program that pays time and a half for anything over 40 hours. This should have 3 functions in addition to main
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.
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.
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 mainMain 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

Edited by pyTony: Bad format removed

3 Years
Discussion Span
Last Post by Gribouillis
Featured Replies

Just to make what pyTony and Vegaseat said perfectly clear: we won't do your homework for you. To quote the DaniWeb Community Rules:

Do provide evidence of having done some work yourself if posting questions from school or work assignments

We are here to help you become a competent programmer, not to hand you an underserved passing grade. Show us what you've done so far, and we'll help you fix it. Ask questions, we'll try to answer them. But just posting the your assignment without so much as an introduction? That's not going to earn anything but our contempt.

Edited by Schol-R-LEA

def main():

def hours():

           hours = float(input("How many hours did you work?: "))
           while hours >8 and hours >86:
                 hours=input("invalid speed. please enter a number atleast from 8 and and above 50")
                 payrate=float(input("enter the pay rate"))
           while payrate<=7 and payrate>50:
                 payrate= input("invalid speed.please enter a number between 7 and 500")
           return (payrate,hours)

def calchour(regularhours,overtimehours):

           if hours > 40:
              regularhours = 40
              overtimehours = hours - 40
              regularhours = hours
              overtimehours = 0
           return (regulaerhours,overtimehours)

def prt(payrate,regularhours,overtimehours,regularpay,overtimepay,totalpay):
              print ("Pay rate $%0.2f" %  payrate)
              print ("Regular Hours %d" % regularhours)
              print( "Overtime hours %d" % overtimehours)
              print ("Regular pay $%0.2f" % (regularhours * payrate))
              print ("Overtime pay $%0.2f" % (overtimehours * (payrate * 1.5)))
              print ("Total Pay $%0.2f" % (regularhours * payrate + overtimehours * payrate * 1.5))


is my program. getting error line 7 in main
    payrate,hrs=totalhours and line40  in module main()

    could you please suggest me.

There are many things to change in your code. Solve the issues one by one with the help of the exception tracebacks printed by python. Here tre traceback is

Traceback (most recent call last):
  File "./payrate.py", line 42, in <module>
  File "./payrate.py", line 7, in main
TypeError: 'float' object is not iterable

totalhours was defined to be 0.0 at line 6, so line 7 is equivalent to

payrate, hours = 0.0

which is meaningless. You probably meant to call function hours() here. But you must first choose another name for the local variable hours defined at line 2, or change the name of the function.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.