You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python薪资计算程序主模块函数调用与变量赋值问题求助

薪资计算代码修正方案

问题总结与修正点

  • 函数调用语法错误:主模块中变量赋值逻辑颠倒,正确格式应为变量 = 函数(),而非函数 = 变量
  • 输入未转换为数值类型:获取工时、时薪、税率的输入需转为float类型,否则无法完成数值计算
  • 字符串格式化错误:修复printinfo函数中变量名拼写错误(empname→empName),修正PrintTotals函数中f-string格式化语法错误,同时修复变量名拼写错误(TotNetpay→TotNetPay)
  • 累计逻辑缺失:在主循环中添加累计代码,将每个员工的工时、总薪资、税费、净薪累加到对应全局统计变量中

修正后的完整代码

def GetEmpName():
    empName = input("Enter employee name: ")
    return empName

def GetHoursWorked():
    # 将输入转换为float类型
    hrsWrkd = float(input("Enter hours worked: "))
    return hrsWrkd

def GetHourlyRate():
    # 将输入转换为float类型
    hrlyRate = float(input("Enter hourly rate: "))
    return hrlyRate

def GetTaxRate():
    # 将输入转换为float类型(税率输入为小数,比如0.15代表15%)
    taxRate = float(input("Enter Tax Rate: "))
    return taxRate

def CalcTaxAndNetPay(hrsWrkd, hrlyRate, taxRate):
    grosspay = hrsWrkd * hrlyRate
    incometax = grosspay * taxRate
    netpay = grosspay - incometax
    return grosspay, incometax, netpay

def printinfo(empName, hrsWrkd, hrlyRate, grosspay, taxRate, incometax, netpay):
    # 修复变量名拼写错误empname→empName
    print(empName, f"{hrsWrkd:,.2f}",  f"{hrlyRate:,.2f}", f"{grosspay:,.2f}",  f"{taxRate:,.1%}",  f"{incometax:,.2f}",  f"{netpay:,.2f}")

def PrintTotals(TotEmployees, TotHours, TotGrossPay, TotTax, TotNetPay):    
    print()
    print(f"Total Number Of Employees: {TotEmployees}")
    # 修复f-string格式化语法错误,统一使用正确格式
    print(f"Total number of hours: {TotHours:,.2f}")
    print(f"Total gross pay: {TotGrossPay:,.2f}")
    print(f"Total tax: {TotTax:,.2f}")
    # 修复变量名拼写错误TotNetpay→TotNetPay
    print(f"Total net pay: {TotNetPay:,.2f}")

if __name__ == "__main__":
    TotEmployees = 0
    TotHours = 0.00
    TotGrossPay = 0.00
    TotTax = 0.00
    TotNetPay = 0.00
    while True:
        empName = GetEmpName()
        if empName.upper() == "END":
            break
        # 修正函数调用语法,正确赋值变量
        hrsWrkd = GetHoursWorked()
        hrlyRate = GetHourlyRate()
        taxRate = GetTaxRate()
        
        grosspay, incometax, netpay = CalcTaxAndNetPay(hrsWrkd, hrlyRate, taxRate)
        printinfo(empName, hrsWrkd, hrlyRate, grosspay, taxRate, incometax, netpay)
        
        TotEmployees += 1
        # 添加累计逻辑,更新统计变量
        TotHours += hrsWrkd
        TotGrossPay += grosspay
        TotTax += incometax
        TotNetPay += netpay

# 调用统计打印函数
PrintTotals(TotEmployees, TotHours, TotGrossPay, TotTax, TotNetPay)

内容的提问来源于stack exchange,提问作者Reddish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:50:26