python 功能要求:从一个文件中读入学生成绩,计算平均成绩,查找最高分,最低分,输出 不及格学生名单。文件格式:姓名 成绩

python IDLE功能要求:从一个文件中读入学生成绩,计算平均成绩,查找最高分,最低分,输出
不及格学生名单。文件格式:姓名 成绩

img

txt=open("1.txt",'r',encoding="utf-8")
flag=0
sumv=0
t=[]
c=0
while 1:
    line=txt.readline()
    if line=="":
        break
    tmp=line.split()
    name=tmp[0]
    value=tmp[1]
    value=int(value)
    if flag==0:
        flag=1
        maxv=value
        minv=value
    c+=1
    
    if value>maxv:
        maxv=value
    if value<minv:
        minv=value
    sumv+=value
    if value<60:
        t.append(name)

print("平均分是",sumv/c)
print("最高分是",maxv)
print("最低分是",minv)
print("不及格学生:")
if len(t)>0:
    for i in t:
        print(i)
else:
    print("无")

从一个文件中读入学生成绩:(文件格式未知)
输出 不及格学生名单:(文件格式未知)

你的文件格式是什么样的?

import os
grades = []
names = []
count = 0
sum = 0.0
file_path = r'/grades'
files = os.listdir(file_path)
for one in files:
    with open(os.path.join(file_path,one), 'r') as f:
        grade = int(f.readline().split(' ')[1])
        name = int(f.readline().split(' ')[0])
        sum += grade
        grades.append(grade)
        names.append(name)
        count +=1

print("最高分:{} 最低分:{} 平均分:{} ".format(max(grades),min(grades),sum /count),end='')
for i in range(len(grades)):
    if grades[i] <60:
        print("不及格:{} ".format(name[i]))




没有文件,自己生成了一个,你参考一下吧:

import random

with open('scores.txt', 'w+') as f1:
    li = [random.randint(40, 100) for i in range(100)]
    for count in range(100):
        f1.write('name'+str(count)+','+str(li[count]) + '\n')

with open('scores.txt', 'r') as f2:
    lines = f2.readlines()
    scores = []
    names = []
    res = 0
    for line in lines:
        score = int(line.split(',')[1])
        names.append(line.split(',')[0])
        scores.append(score)
    print('最高成绩为:%s' % (max(scores)))
    print('最低成绩为:%s' % (min(scores)))
    print('平均成绩为:%s' % (sum(scores)/len(scores)))
    lst = [names[i] for i in range(len(names)) if scores[i]<60]
    print('不及格的有:{}'.format(lst))

方便的话,发下大致的输入文件格式,来进行下一操作。

scorefn = "score.txt"
with open(scorefn, "r", encoding='utf8') as f:
    lines = f.read().splitlines()
    max_score, min_score = None, None
    score_sum = 0
    fail_students = []
    num_students = 0
    for l in lines:
        splits = l.split()
        if len(splits) != 2 :
            continue
        num_students += 1
        name = splits[0]
        score = int(splits[1])
        score_sum += score
        if score < 60:
            fail_students.append(name)
        max_score = score if max_score is None else max(max_score, score)
        min_score = score if min_score is None else min(min_score, score)

    print('平均成绩:{}\n最高分:{}\n最低分:{}\n不及格学生:'.format(score_sum/num_students, max_score, min_score))
    for s in fail_students:
        print(s)