当前目录下有一个文件名为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人、\ 80~89间%d人、70~79间%d人、60~69间%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()