首页 > 解决方案 > 我如何获得一个程序来计算文件中每个员工的加薪?

问题描述

这是我在介绍编程课程时要解决的问题:

一所小型大学的受托人正在考虑为教职员工加薪投票。他们希望为收入超过 50,000.00 美元的人加薪 7%,为收入超过 60,000.00 美元的人加薪 4%,为所有其他人加薪 5.5%。但是在这样做之前,他们想知道这将花费多少。编写一个程序,打印每位教员的加薪、加薪总额和加薪平均值。此外,打印加薪前后的教师工资总额。使用文件结尾作为标记值。

这是我到目前为止的代码:

def main():

    inFile = open('program7.txt', 'r')
    total = 0
    newSalaryTotal = 0
    lineRead = inFile.readline()
    while lineRead != '':
       words = lineRead.split() 
       for word in words:
           salary = float(word)
           print(format(salary, '.2f'))
       if salary > 60000.0:
           newSalary = salary * 1.04
           newSalaryTotal += newSalary
           payRaise = newSalary - salary
           total = total + salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary > 50000.0:
           newSalary = salary * 1.07
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary < 50000.0:
           newSalary = salary * 1.055
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       lineRead = inFile.readline()

    print('The total is: ', format(total, '.2f'))
    print('The new salary total is: ', format(newSalaryTotal, '.2f'))
    # Close the file.
    inFile.close()


main()`

从文件中读取数据后,我正在努力让输出显示每个员工的加薪。我也不知道如何设置计算加薪平均值所需的变量。任何可以提供的帮助将不胜感激。提前致谢

编辑:这是我上面提供的代码给出的输出。我要问的是为什么没有为从文件中读取的每个值打印原始工资和加薪?我还提供了以下文本文件中的数据:

输入数据“program7.txt”:

52500.00 64029.50 56000.00 50001.00 65500.00 42800.00 45000.50 68900.00 60000.00 59999.94 54120.25 64100.00 44000.50 80100.20 90000.00 41000.00 60500.50 72000.00 50000.01 50000.00 80001.75 60001.00

输出

标签: pythonfile

解决方案


现在我将避免查看您如何显示每个员工的加薪,因为您的打印报表似乎已经这样做了?如果没有您的“program7.txt”文件,我无法看到实际生成的内容,因此也许您可以编辑问题以描述您当前和所需的输出。

相反,我将重点帮助您计算平均值。你的问题有点不明确,因为有多种方法可以计算“加薪的平均值”。为了说明这一点,请考虑以下输入数据。

+-------+--------+-------+------------+ 
| Name  | Salary | Raise | New Salary |
+-------+--------+-------+------------+
| Bob   | 100000 |  4%   |     104000 |
| Sally |  40000 |  5.5% |      42200 |
| Dave  |  55000 |  7%   |      58850 |
+-------+--------+-------+------------+
| Total | 195000 | 10050 |     205050 |
+-------+--------+-------+------------+

第一种可能性是通过将加薪的百分比相加然后除以人数来计算每人的平均加薪,即

(4% + 5% + 7%) / 3 = 16%/3 = 5.333%

或者,您可以通过将加薪相加并除以旧工资来计算平均加薪作为总成本的函数。IE

10050 / 195000 = 5.154%

这两个都是“正确的”

对于第一种方法,您需要为员工人数添加一个变量。

total对于第二种方法,您可以通过减去newSalaryTotal

编辑:您输入数据中的所有薪水都作为一行输入。

目前,您的 if 语句仅在每行的最后一个“单词”上运行。在您的情况下,您可能希望它每个单词触发一次。为此,您需要缩进要包含在 for 循环中的 if 语句,如下所示

   for word in words:
       salary = float(word)
       print(format(salary, '.2f'))
       if salary > 60000.0:
           newSalary = salary * 1.04
           newSalaryTotal += newSalary
           payRaise = newSalary - salary
           total = total + salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary > 50000.0:
           newSalary = salary * 1.07
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary < 50000.0:
           newSalary = salary * 1.055
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
   lineRead = inFile.readline()

或者,您可以保持程序不变,而是编辑输入数据,以便将每个薪水放在新的一行上,而不仅仅是用空格分隔。即作为program7_2.txt


推荐阅读