这是我在编程课程入门中要解决的问题:
一所小型大学的受托人正在考虑投票给他们的老师加薪
成员。他们希望将收入超过$ 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