从1000行tex中找到总工资和平均工资

2024-05-26 21:53:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要编写一个python程序,它可以读取1000行文本,计算每个教授类别(助理、助理、全职、所有教员)的工资总额和平均值。问题是:

A university posts its employee salary at http://cs.armstrong.edu/liang/data/Salary.txt. Each line in the file consists of faculty first name, last name, rank, and salary (see Exercise 13.16). Write a program to display the total salary for assistant professors, associate professors, full professors, and all faculty, respectively, and display the average salary for assistant professors, associate professors, full professors, and all faculty, respectively.

这是我目前掌握的代码:

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()

我不知道如何从各自的教授级别获得薪水,以及如何合计和平均。任何意见都将不胜感激!在

结果:

^{pr2}$

Tags: inislineassociatefullintassistantprint
3条回答

通过在字典中列出每个职位的工资清单,然后简单地将总和除以长度,就可以计算出任何级别的级别。在

我的例子:

import urllib.request

def main():
    infile = urllib.request.urlopen('http://cs.armstrong.edu/liang/data/Salary.txt')
    s = infile.read().decode().splitlines()

    pays = {}

    for line in s:
        *name, rank, pay = line.split()
        pays[rank] = pays.get(rank, []) + [float(pay)]

    for rank, sals in pays.items():
        avg = sum(sals) / len(sals)
        print("{:>10} ({:3}): ${:,.2f}".format(rank.title(), len(sals), avg))


if __name__ == '__main__':
    main()

以及输出:

^{pr2}$

在python2.7中,使用urllib2.urlopen并将salaries按标题与表一起分组。在

在python3中,使用urllib.request.urlopen并将print ..改为{}

import urllib2

rs = urllib2.urlopen('http://cs.armstrong.edu/liang/data/Salary.txt')
title_salaries = {}

for line in rs.read().split("\n"):
    _, _, title, salary = line.split(' ')
    if not title_salaries.has_key(title):
        title_salaries[title] = []

    title_salaries[title].append(float(salary))

for title, salaries in title_salaries.items():
    print title
    print 'avg:', sum(salaries) / len(salaries)
    print 'total:', sum(salaries)
    print
import urllib.request

def main():
    infile = urllib.request.urlopen("http://cs.armstrong.edu/liang/data/Salary.txt")

    asstSalTotal = 0
    asstTotal = 0
    asscSalTotal = 0
    asscTotal = 0
    fullSalTotal = 0
    fullTotal = 0

    for line in infile.readlines():
        data = line.decode().split()
        designation = data[2]
        if designation == "assistant":
            asstSalTotal += float(data[3])
            asstTotal += 1
        elif designation == "associate":
            asscSalTotal += float(data[3])
            asscTotal += 1
        elif designation == "full":
            fullSalTotal += float(data[3])
            fullTotal += 1

    allSalTotal = asstSalTotal + asscSalTotal + fullSalTotal
    allTotal = asstTotal + asscTotal + fullTotal

    print("Total Salary:\n\tAssistant:\t%d\n\tAssociate:\t%d\n\tFull:\t%d\n\tAll:\t%d\n\nAvg Salary:\n\tAssistant:\t%d\n\tAssociate:\t%d\n\tFull:\t%d\n\tAll:\t%d\n" % (asstSalTotal, asscSalTotal, fullSalTotal, allSalTotal, asstTotal, asscTotal, fullTotal, allTotal))


main()

相关问题 更多 >

    热门问题