【发布时间】:2014-06-20 00:43:30
【问题描述】:
我需要编写一个 python 程序来读取 1000 行文本,并计算每个教授类别(助理、副教授、全职、所有教员)的总工资和平均工资。问题来了:
一所大学将其员工工资发布在 http://cs.armstrong.edu/liang/data/Salary.txt。文件中的每一行 由教师的名字、姓氏、职级和薪水组成(见 练习 13.16)。编写程序显示总工资 助理教授、副教授、正教授等 教师,分别显示助理的平均工资 教授、副教授、正教授和所有教职员工, 分别。
这是我目前的代码:
import urllib.request
def main():
infile = urllib.request.urlopen('http://cs.armstrong.edu/liang/data/Salary.txt')
s = infile.read().decode().splitlines()
asstTotal = 0
asstCount = 0
asscTotal = 0
asscCount = 0
fullTotal = 0
fullCount = 0
for line in s:
if "assistant" in line:
asstCount += 1
asstTotal += int(float(s[3]))
if "associate" in line:
asscCount += 1
asscTotal += int(float(s[3]))
if "full" in line:
fullCount += 1
fullTotal += int(float(s[3]))
allFacTotal = asstTotal + asscTotal + fullTotal
avgAsst = int(asstTotal / asstCount)
avgAssc = int(asscTotal / asscCount)
avgFull = int(fullTotal / fullCount)
avgAll = int(allFacTotal / 1000)
print("Total assistant professor salary is", asstTotal)
print("Total associate professor salary is", asscTotal)
print("Total full professor salary is", fullTotal)
print("Total faculty salary is", allFacTotal)
print("Average assistant professor salary is", avgAsst)
print("Average associate professor salary is", avgAssc)
print("Average full professor salary is", avgFull)
print("Average faculty salary is", avgAll)
main()
我不知道如何从各自的教授级别中获取薪水,并对它们进行总计和平均。任何意见将不胜感激!
结果:
Total assistant professor salary is 24306418
Total associate professor salary is 27235856
Total full professor salary is 27631726
Total faculty salary is 79174000
Average assistant professor salary is 79174
Average associate professor salary is 79174
Average full professor salary is 79174
Average faculty salary is 79174
【问题讨论】:
-
此代码甚至在语法上都无效,因为您在 URL 上省略了引号,并且没有在
for循环中放置任何正文。请发布一个语法上有效的示例并展示它到目前为止的作用。 -
@Dan,感谢您指出 URL 上的引号。我的
for循环是空的,因为我不确定从什么开始,但我添加了一些内容。 -
在
line上使用strip()split()。然后使用int()将字符串更改为整数。并使用print看看你会得到什么——学习一些东西。 -
@annabananana7,代码示例的格式仍然错误,由于
if块的缩进不正确而无法编译。你真的按照这里所示的方式尝试过吗?请整理一个完整的示例,运行它,然后解释你得到的输出与你想要的有什么不同。 (否则我们只是在为你做作业......) -
另一个问题是您正在将整个文件内容读入字符串
s。字符串对象没有readline()方法,所以如果你实际运行它,你也应该在那里得到一个错误。你应该做的更像是for line in s.splitlines():