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
相关产品推荐
相关产品推荐

