python期末复习——文件

当前目录下有一个文件名为score1.txt的文本文件, 存放着某班学生的Python课程成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占30%,期末成绩占70%的比例计算总评成绩(取整数),并分学号、总评成绩两列写入另一文件score2.txt。 同时在屏幕上输出学生总人数,按总评成绩计90以上 、80~89、70~79、60~69、60分以下各成绩档的人数和班级总平均分(取整数)。

f=open("score1.txt","r") 
a=f.readlines() 
del a[0] #删除第一行的中文标题 
list2=[] 
for line in a: 
	line=line.strip() #去掉最右边换行 
	list1=line.split() #调用split方法用空格切割
	f_score=int(int(list1[2])*0.3+int(list1[3])*0.7)#算总评成绩
	list2.append([list1[0],list1[1],f_score])#添加到写出的列表
f.close() 
c=[0,0,0,0,0] 
count=0 
sum=0 
f2=open("score2.txt",'w') 
f2.write("学号\t\t姓名 \t总评成绩\n"); #制表符的写法是\t,作用是对齐表格的各列。
for L2 in list2: 
	if 90<L2[2]<=100: 
		c[0]+=1 
	elif L2[2]>=80: 
		c[1]+=1 
	elif L2[2]>=70: 
		c[2]+=1 
	elif L2[2]>=60: 
		c[3]+=1
	else: 
		c[4]+=1 
	count+=1 
	sum+=L2[2] 
	f2.write(L2[0]+"\t"+L2[1]+"\t"+str(L2[2])+"\n") 
f2.close() 
avg_score=int(sum/count) 
print(“学生总人数为%d,按总评成绩计,90以上%d人、\ 8089%d人、7079%d人、6069%d人、\ 60分以下%d人。班级总平均分为%d分。\ "%(count,c[0],c[1],c[2],c[3],c[4],avg_score))  

电子点名程序。

import openpyxl 
import random 
n=119 
m=5 
filename=r'python点名册.xlsx' 
wb=openpyxl.load_workbook(filename) 
ws=wb.worksheets[0] 
stulist=[] 
#下面的程序添加学生信息 
for i in range(7,n+7):
 	stulist.append([ws['B'+str(i).strip()].value,ws['C'+str(i).strip()].value])
#随机产生M个数字(范围:0-(119-1)) 
for i in range(m): 
	num=random.randint(0,n-1) 
	print(stulist[num]) 
	dao=input("请输入是否到(1-到,2-不到):") 
	if dao=='1': 
		ws['E'+str(num+7).strip()]="√" 
	elif dao=='2': 
		ws['E'+str(num+7).strip()]="×" 
	else: 
		break 
	wb.save(filename)  

随机产生M个数字

#随机产生M个数字(范围:0-(119-1)) 
for i in range(m): 
	num=random.randint(0,n-1) 
	print(stulist[num]) 
	dao=input("请输入是否到(1-到,2-不到):") 
	if dao=='1':
	 	ws['E'+str(num+7).strip()]="√"
	elif dao=='2':
		ws['E'+str(num+7).strip()]="×"
	else: 
		break 
wb.save(filename) 

扶贫重点对象做题记
编写程序,根据附件的高考模拟考试成绩表,输出总分前五名的学生姓名,班别,总分(从高到低)csv文件有干扰数据,要用程序排除。考号都是以3开头。
注意:第5名的输出结果可能是不齐的,网上搜索"python format 中文对齐"找解决办法。

fo=open("位置.csv","r",encoding="utf-8")
print("总分前5名的学生情况")
print("名词\t班别\t姓名\t总分")
ls=[]
for line in fo:
	line=line.replace("\n","")
	if str(line[0])=="3":
		ls.append(line.split(","))
ls1=[]
ls2=[]
s=0
for i in ls:	
	s=eval(i[3])+eval(i[4])+eval(i[5])+eval(i[6])+eval(i[7])+eval(i[8])
	a=(i[1],i[2],s)
ls2=sorted(ls1,ley=lambda x:x[2])
ls2.reverse()
for c in range(5):
	print("{}\t{}\t{}\t{}".format(c+1,ls2[c][0],ls2[c][1],ls2[c][2]))

在当前目录下有一个文件名为movie.txt,文件中有6列数据,包括No Name Country Score Lasting,分别表示序号、电影吗、上映年份、国家、评分和电影时长。李华只想观看时长在90分钟一下(包括90分钟)的电影。请你编写程序帮他挑选出符合条件的电影序号。一行打印一个序号写到文件out.txt中。

file=open(r"movie.txt",encoding="UTF8")
m=file.readlines()
del m[0]
num=[]
for line in m:
	line=line.strip()
	line=line.split()
	if int(line[5])<=90:
		num.append(line[0])
file.close()
infile=open("out.txt","w",encoding="UTF8")
for i in num:
	infile.write(i+"\n")
infile.close()
  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值