0

我知道它已经被问过了,但答案超级不清楚

第一个要求是打开一个文件(遗憾的是我不知道该怎么做)
第二个要求是一段代码,它执行以下操作:

每行代表一个学生,由一个学号、一个姓名、一个部门代码和一个期中成绩组成,所有这些都用空格分隔

所以我不认为我可以定位该元素,因为它被空格分开?

这是文件的摘录,显示了行结构

987654322  Xu  Carolyn  L0101   19.5
233432555    Jones  Billy Andrew      L5101   16.0
555432345    Patel  Amrit                 L0101   13.5
888332441    Fletcher Bobby L0201   18
777998713   Van Ryan  Sarah Jane         L5101   20 
877633234    Zhang  Peter             L0102   9.5
543444555    Martin  Joseph           L0101   15    
876543222    Abdolhosseini  Mohammad Mazen  L0102 18.5

我得到了以下提示:

  • 请注意,每个学生的姓名数量各不相同。
  • 用于rstrip()去除行尾多余的空格。

我不明白第二个提示。

这是我到目前为止所拥有的:

counter = 0  
elements = -1  

for sets in the_file  
    elements = elements + 1  
    if elements = 3  

我知道这与readlines()定位部分代码有关。

4

3 回答 3

1
marks = [float(line.strip().split()[-1]) for line in open('path/to/input/file')]
average = sum(marks)/len(marks)

希望这可以帮助

于 2012-11-08T04:55:49.320 回答
0

打开并写入文件 剥离方法

像这样的东西?

data = {}
with open(filename) as f:#open a file

    for line in f.readlines():#proceed through file lines

        #next row is to split data using spaces and them skip empty using strip
        stData = [x.strip() for x in line.split() if x.strip()]

        #assign to variables
        studentN, studentName, sectionCode, midtermGrade = stData
        if sectionCode not in data:
            data[sectionCode] = []

        #building dict, key is a section code, value is a tuple with student info
        data[sectionCode].append([studentN, studentName, float(midtermGrade)]

#make calculations
for k,v in data.iteritems():#iteritems returns you (key, value) pair on each iteration
    print 'Section:' + k + ' Grade:' + str(sum(x[2] for x in v['grade']))
于 2012-11-08T04:40:20.347 回答
0

或多或少:

infile = open('grade_file.txt', 'r')
score = 0
n = 0
for line in infile.readlines():
    score += float(line.rstrip().split()[-1])
    n += 1

avg = score / n
于 2012-11-08T04:41:50.837 回答