使用多个函数和返回函数的Python工资程序

-1 投票
2 回答
6091 浏览
提问于 2025-04-17 22:53

好的,我需要帮助来完成这个程序。这里是作业要求:

写一个工资计算程序,对于超过40小时的工作时间,支付1.5倍的工资。这个程序除了主函数外,还需要有3个其他的函数。

  1. 第一个函数要询问用户总共工作了多少小时,以及工资的标准,并把这些信息返回给主函数。需要对这些值进行验证。工作小时数必须至少是8小时,最多不能超过86小时。工资标准不能低于7.00美元,也不能高于50.00美元。
  2. 第二个函数计算正常工作小时和加班小时,并把这些信息返回给主函数。因为有的人可能工作时间少于40小时,所以要考虑这种情况。
  3. 第三个函数计算正常工资(正常工作小时乘以工资标准)、加班工资(加班小时乘以加班工资标准)以及总工资,并把这些信息返回给主函数。
  4. 主函数会把这些信息显示在屏幕上,格式要像下面的示例一样。(值需要传递和返回)。

输出应该看起来像下面这样:

             Payroll Information
Pay rate                           $10.00
Regular Hours                       40
Overtime Hours                      20
Regular pay                        $400.00
Overtime pay                       $300.00
Total Pay                          $700.00

这是我目前的进展:

def work_info():
    hw = input('Enter the amount of hours worked between 8 and 56')
    while hw < 8 or hw > 86:
        print('Enter the amount of hours in range')
    pr = input('Enter the your current payrate between $7 and $50')
    while pr < 7 or pr > 50:
        print('Enter a payrate in range')

def reg_ovt_hours():
    if hw < 40:
        reg_hours = hw and ovt_hours = 0
    else reg_hours > 40
        ovt_hours = hw - 40

    return hw

def reg_pay():
    reg_pay = reg_hours * pr
    ovt_pay = ovt_hours * reg_pay * 1.5
    tot_pay = reg_pay + ovt_pay
    return pr, reg_hours, ovt_hours

def main():
    print('Payroll Information')
    print ('Pay rate') pr
    print reg_hours
    print ovt_hours
    print reg_pay
    print ovt_pay
    print tot_pay

main() 

请告诉我如何才能让这个程序正常工作。

2 个回答

0

这一行是错的:

else reg_hours > 40

应该是:

elif reg_hours > 40:

或者:

else:

你缺少了一个冒号,而且在else后面不能有条件,因为else是用来处理所有其他情况的,简单来说就是“否则”。

如果reg_hours == 40,应该发生什么呢?

0

你需要注意变量的作用范围,也就是变量在哪些地方可以被使用。我建议你去看看关于Python中变量作用范围的教程。

我还推荐你查看这个问题:Python作用范围规则的简短描述?

举个例子,在work_info里你定义了hwpr,但目前它们只在这个地方被定义。所以当你之后想用这些变量时,会出现错误,因为Python解释器不知道它们是什么。

另外,你需要把else reg_hours > 40改成else:或者elif reg_hours > 40:

撰写回答