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

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

最佳答案

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

09-07 05:20