我如何获得一个程序来从文件计算每个雇员的加薪?

时间:2019-03-16 01:26:07

标签: python file

这是我在编程课程入门中要解决的问题:

一所小型大学的受托人正在考虑投票为其教师加薪 成员。他们希望将收入超过$ 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

Output

1 个答案:

答案 0 :(得分:0)

现在,我将避免查看您如何显示每位员工的加薪,因为您的打印报表似乎已经做到了?没有您的“ 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%

或者,您可以通过将加薪除以旧工资来计算平均加薪与总成本的函数。即

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