python - 我如何获得一个程序来计算文件中每个员工的加薪?
问题描述
这是我在介绍编程课程时要解决的问题:
一所小型大学的受托人正在考虑为教职员工加薪投票。他们希望为收入超过 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
解决方案
现在我将避免查看您如何显示每个员工的加薪,因为您的打印报表似乎已经这样做了?如果没有您的“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
推荐阅读
- swift - 我如何在应用程序中保持用户登录?迅速 5
- java - 如何从 java 中的另一个方法正确引用变量?
- python - socket.settimeout() 在 Python 2.7(端口扫描器)中不起作用
- spring - 一个控制器可以在 Clean Architecture 中调用多个用例(交互器)吗?
- primefaces - PrimeFaces 日历聚焦时不显示日历
- r - 从R中的列表创建数据框
- html - 溢出隐藏导致 div 在浮动 div 下方而不是在其后面
- python - 无法从 oracle 数据库验证用户(python 3.8.3 和 django 3.0)
- c# - 泛型方法的 C# 奇怪的内联行为 - 可能的错误
- swiftui - SwiftUI 2.0 / Xcode 12 中父视图和子视图的警报