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