PYTHON程序设计期中作业

文章目录

  • PYTHON程序设计期中作业
    • 题目要求
    • 初版
    • 第二版
    • 第三版
    • 第四版
    • 终版

题目要求


代码及截图请参考终版

初版

设计了计算出勤率、总成绩和平均分的代码

#fo=open("D:\\coder\\randomnumbers\\成绩表 - 副本.csv","r",encoding="utf-8")
fr=open("D:\\coder\\randomnumbers\\成绩表 - 副本.csv","r",encoding="utf-8")
fw=open("D:\\coder\\randomnumbers\\grade.csv","w")
ls=[]
list=[]
for line in fr:line=line.replace("\n","")ls.append(line.split(","))
#print(ls)
def chuqingnum(a,b,c):num=(a+b+c)/3return num
def kaoqin(a,b,c):grade=10-(3-a-b-c)*3return gradedef zuoye(a,b,c):grade=((a+b+c)/3)*0.1return grade
def final(a,b,c,d):grade=(10-(3-a)*3)*1+(b)*0.1+c*0.2+d*0.4return grade
num,pingshi,qizhong,qimo=0,0,0,0
sum=0
for i in range(len(ls)):num=0pingshi=0for j in range(len(ls[i])):if ls[i][j].replace(".","").isnumeric():ls[i][j] = eval(ls[i][j])if j==1 or j==2 or j==3:num+=ls[i][j]elif j==4 or j==5 or j==6:pingshi+=ls[i][j]elif  j==7:qizhong=ls[i][j]elif j==8:qimo=ls[i][j]numrate=(num/3)*100#print(qizhong)chuqinglv="{:.2f}%".format(numrate)final1=final(num,pingshi,qizhong,qimo)sum+=final1final1 = "{:.2f}".format(final1)list.append(chuqinglv)list.append(final1)
list[0]='出勤率'
list[1]='总成绩'
list0=[]
list1=[]
list2=[]
for i in range(len(ls)):list0.append(ls[i][0])
#print(list0)
for i in range(len(list)):if i%2==0:list1.append(list[i])else:list2.append(list[i])
li=[[0]*3 for _ in range(len(list1))]
#print(li)for i in range(len(list1)):li[i][0]=(list0[i])li[i][1]=(list1[i])li[i][2]=(list2[i])li[-1][-2]='平均分'
sum=sum/(len(list1))
li[-1][-1]="{:.2f}".format(sum)
print(li)
for row in li:#print(row)#fw.write(",".join(row)+"\n")fw.write(",".join('%s' %id for id in row) + "\n")fr.close()
fw.close()

[[‘姓名’, ‘出勤率’, ‘总成绩’], [‘闵跃龙’, ‘100.00%’, ‘82.60’], [‘卢蓓蓓’, ‘100.00%’, ‘78.40’], [‘荣榕’, ‘100.00%’, ‘81.00’], [‘洪晨’, ‘33.33%’, ‘82.40’], [‘胡佳慧’, ‘100.00%’, ‘90.50’], [‘陈亚文’, ‘100.00%’, ‘91.40’], [‘曾小敏’, ‘100.00%’, ‘80.60’], [‘王松岩’, ‘100.00%’, ‘88.60’], [‘曹淑玲’, ‘66.67%’, ‘85.90’], [‘涂光超’, ‘100.00%’, ‘77.00’], [‘吴佳宁’, ‘100.00%’, ‘79.10’], [‘陈俊荣’, ‘66.67%’, ‘79.60’], [‘余倩瑶’, ‘100.00%’, ‘90.10’], [‘卓佼霏’, ‘66.67%’, ‘84.30’], [‘陈彩月’, ‘100.00%’, ‘85.00’], [‘陈昌祺’, ‘100.00%’, ‘85.50’], [‘朱文静’, ‘66.67%’, ‘85.40’], [‘阳宇’, ‘100.00%’, ‘85.60’], [‘覃莹’, ‘100.00%’, ‘85.00’], [‘’, ‘平均分’, ‘78.48’]]

第二版

简化了部分函数,将功能集成到一个函数中。

fr=open("D:\\coder\\randomnumbers\\成绩表 - 副本.csv","r",encoding="utf-8")
fw=open("D:\\coder\\randomnumbers\\grade.csv","w")
ls,list=[],[]for line in fr:line=line.replace("\n","")ls.append(line.split(","))def final(a,b,c,d):grade=(10-(3-a)*3)*1+(b)*0.1+c*0.2+d*0.4return grade
num,pingshi,qizhong,qimo,sum=0,0,0,0,0for i in range(len(ls)):num=0pingshi=0for j in range(len(ls[i])):if ls[i][j].replace(".","").isnumeric():ls[i][j] = eval(ls[i][j])if j==1 or j==2 or j==3:num+=ls[i][j]elif j==4 or j==5 or j==6:pingshi+=ls[i][j]elif  j==7:qizhong=ls[i][j]elif j==8:qimo=ls[i][j]numrate=(num/3)*100chuqinglv="{:.2f}%".format(numrate)final1=final(num,pingshi,qizhong,qimo)sum+=final1final1 = "{:.2f}".format(final1)list.append(chuqinglv)list.append(final1)list[0]='出勤率'
list[1]='总成绩'
list0,list1,list2=[],[],[]
for i in range(len(ls)):list0.append(ls[i][0])for i in range(len(list)):if i%2==0:list1.append(list[i])else:list2.append(list[i])
li=[[0]*3 for _ in range(len(list1))]for i in range(len(list1)):li[i][0]=(list0[i])li[i][1]=(list1[i])li[i][2]=(list2[i])li[-1][-2]='平均分'
sum=sum/(len(list1))
li[-1][-1]="{:.2f}".format(sum)
print(li)
for row in li:fw.write(",".join('%s' %id for id in row) + "\n")fr.close()
fw.close()

第三版

代码分为读入文件,定义函数和执行主程序三个部分,并增加了注释。

#定义打开和写入文件的路径
fr=open("D:\\coder\\randomnumbers\\成绩表 - 副本.csv","r",encoding="utf-8")
fw=open("D:\\coder\\randomnumbers\\grade.csv","w")#声明变量和定义函数
ls,list=[],[]
sum=0
def trans(l):    #将csv读入,转化,返回列表形式for line in l:line = line.replace("\n", "")ls.append(line.split(","))return lsdef final(a,b,c,d):   #计算总分的函数grade=(10-(3-a)*3)*1+(b)*0.1+c*0.2+d*0.4return gradedef main(ls):  #主函数,输入为处理好的列表,输出为列表形式的出勤率和总分qizhong,qimo,numerate=0,0,0global sumfor i in range(len(ls)):num=0pingshi=0for j in range(len(ls[i])):if ls[i][j].replace(".", "").isnumeric():ls[i][j] = eval(ls[i][j])if j == 1 or j == 2 or j == 3:num += ls[i][j]elif j == 4 or j == 5 or j == 6:pingshi += ls[i][j]elif j == 7:qizhong = ls[i][j]elif j == 8:qimo = ls[i][j]numrate = (num / 3) * 100chuqinglv = "{:.2f}%".format(numrate)final1 = final(num, pingshi, qizhong, qimo)sum += final1final1 = "{:.2f}".format(final1)list.append(chuqinglv)list.append(final1)sum = sum / (len(list) / 2)return listdef shuru(list):   #将个人姓名和汉字部分加入,计算班级平均分,形成能够被csv文件读写的列表形式list[0] = '出勤率'list[1] = '总成绩'list0, list1, list2 = [], [], []for i in range(len(ls)):list0.append(ls[i][0])for i in range(len(list)):if i % 2 == 0:list1.append(list[i])else:list2.append(list[i])li = [[0] * 3 for _ in range(len(list1))]for i in range(len(list1)):li[i][0] = (list0[i])li[i][1] = (list1[i])li[i][2] = (list2[i])li[-1][-2]='平均分'li[-1][-1]="{:.2f}".format(sum)return li
#主程序
trans(fr)
list=main(ls)li=shuru(list)
print(li) #检查输出内容
for row in li: #写入csv文件fw.write(",".join('%s' %id for id in row) + "\n")
fr.close()
fw.close()

[[‘姓名’, ‘出勤率’, ‘总成绩’], [‘闵跃龙’, ‘100.00%’, ‘82.60’], [‘卢蓓蓓’, ‘100.00%’, ‘78.40’], [‘荣榕’, ‘100.00%’, ‘81.00’], [‘洪晨’, ‘33.33%’, ‘82.40’], [‘胡佳慧’, ‘100.00%’, ‘90.50’], [‘陈亚文’, ‘100.00%’, ‘91.40’], [‘曾小敏’, ‘100.00%’, ‘80.60’], [‘王松岩’, ‘100.00%’, ‘88.60’], [‘曹淑玲’, ‘66.67%’, ‘85.90’], [‘涂光超’, ‘100.00%’, ‘77.00’], [‘吴佳宁’, ‘100.00%’, ‘79.10’], [‘陈俊荣’, ‘66.67%’, ‘79.60’], [‘余倩瑶’, ‘100.00%’, ‘90.10’], [‘卓佼霏’, ‘66.67%’, ‘84.30’], [‘陈彩月’, ‘100.00%’, ‘85.00’], [‘陈昌祺’, ‘100.00%’, ‘85.50’], [‘朱文静’, ‘66.67%’, ‘85.40’], [‘阳宇’, ‘100.00%’, ‘85.60’], [‘覃莹’, ‘100.00%’, ‘85.00’], [‘’, ‘平均分’, ‘78.48’]]

第四版

将所得数据写入初始表格。

#定义打开和写入文件的路径
fr=open("D:\\coder\\randomnumbers\\成绩表 - 副本.csv","r",encoding="utf-8")
fw=open("D:\\coder\\randomnumbers\\grade.csv","w")#声明变量和定义函数
ls,list=[],[]
sum=0
def trans(l):    #将csv读入,转化,返回列表形式for line in l:line = line.replace("\n", "")ls.append(line.split(","))return lsdef final(a,b,c,d):   #计算总分的函数grade=(10-(3-a)*3)*1+(b)*0.1+c*0.2+d*0.4return gradedef main(ls):  #主函数,输入为处理好的列表,输出为列表形式的出勤率和总分qizhong,qimo,numerate=0,0,0global sumfor i in range(len(ls)):num=0pingshi=0for j in range(len(ls[i])):if ls[i][j].replace(".", "").isnumeric(): #检查是否为数字ls[i][j] = eval(ls[i][j])if j == 1 or j == 2 or j == 3:num += ls[i][j]elif j == 4 or j == 5 or j == 6:pingshi += ls[i][j]elif j == 7:qizhong = ls[i][j]elif j == 8:qimo = ls[i][j]numrate = (num / 3) * 100chuqinglv = "{:.2f}%".format(numrate)final1 = final(num, pingshi, qizhong, qimo)sum += final1final1 = "{:.2f}".format(final1)list.append(chuqinglv)list.append(final1)sum = sum / (len(list) / 2)return listdef shuru(list,ls):   #将个人姓名和汉字部分加入,计算班级平均分,形成能够被csv文件读写的列表形式list[0] = '出勤率'list[1] = '总成绩'list1, list2 = [], []for i in range(len(list)):if i % 2 == 0:list1.append(list[i])else:list2.append(list[i])for i in range(len(list1)-1):ls[i].append(list1[i])ls[i].append(list2[i])ls[0].append('总成绩平均分')grades="{:.2f}".format(sum)ls[1].append(grades)return ls#主程序ls=trans(fr)
list=main(ls)
li=shuru(list,ls)
print(li) #检查输出内容
for row in li: #写入csv文件fw.write(",".join('%s' %id for id in row) + "\n")
fr.close()
fw.close()

[[‘姓名’, ‘考勤1’, ‘考勤2’, ‘考勤3’, ‘作业1’, ‘作业2’, ‘作业3’, ‘期中成绩’, ‘期末成绩’, ‘出勤率’, ‘总成绩’, ‘总成绩平均分’], [‘闵跃龙’, 1, 1, 1, 90, 80, 80, 78, 80, ‘100.00%’, ‘82.60’, ‘78.48’], [‘卢蓓蓓’, 1, 1, 1, 80, 72, 80, 82, 72, ‘100.00%’, ‘78.40’], [‘荣榕’, 1, 1, 1, 85, 75, 80, 85, 75, ‘100.00%’, ‘81.00’], [‘洪晨’, 1, 0, 0, 95, 85, 100, 82, 85, ‘33.33%’, ‘82.40’], [‘胡佳慧’, 1, 1, 1, 95, 88, 90, 90, 88, ‘100.00%’, ‘90.50’], [‘陈亚文’, 1, 1, 1, 100, 92, 90, 82, 92, ‘100.00%’, ‘91.40’], [‘曾小敏’, 1, 1, 1, 95, 75, 80, 78, 75, ‘100.00%’, ‘80.60’], [‘王松岩’, 1, 1, 1, 75, 92, 75, 88, 92, ‘100.00%’, ‘88.60’], [‘曹淑玲’, 1, 0, 1, 85, 88, 80, 92, 88, ‘66.67%’, ‘85.90’], [‘涂光超’, 1, 1, 1, 90, 72, 90, 65, 72, ‘100.00%’, ‘77.00’], [‘吴佳宁’, 1, 1, 1, 85, 72, 90, 78, 72, ‘100.00%’, ‘79.10’], [‘陈俊荣’, 0, 1, 1, 95, 75, 80, 88, 75, ‘66.67%’, ‘79.60’], [‘余倩瑶’, 1, 1, 1, 85, 90, 80, 93, 90, ‘100.00%’, ‘90.10’], [‘卓佼霏’, 0, 1, 1, 90, 85, 90, 84, 85, ‘66.67%’, ‘84.30’], [‘陈彩月’, 1, 1, 1, 90, 80, 90, 85, 80, ‘100.00%’, ‘85.00’], [‘陈昌祺’, 1, 1, 1, 90, 80, 75, 95, 80, ‘100.00%’, ‘85.50’], [‘朱文静’, 1, 1, 0, 90, 90, 80, 82, 90, ‘66.67%’, ‘85.40’], [‘阳宇’, 1, 1, 1, 90, 82, 80, 88, 82, ‘100.00%’, ‘85.60’], [‘覃莹’, 1, 1, 1, 100, 80, 90, 80, 80, ‘100.00%’, ‘85.00’], [‘’]]

终版

在个人出勤率的基础上,添加了班级出勤率。

#定义打开和写入文件的路径
fr=open("D:\\coder\\randomnumbers\\成绩表 - 副本.csv","r",encoding="utf-8")
fw=open("D:\\coder\\randomnumbers\\grade.csv","w")#声明变量和定义函数
ls,list=[],[]
sum,banji=0,0
def trans(l):    #将csv读入,转化,返回列表形式for line in l:line = line.replace("\n", "")ls.append(line.split(","))return lsdef final(a,b,c,d):   #计算总分的函数grade=(10-(3-a)*3)*1+(b)*0.1+c*0.2+d*0.4return gradedef main(ls):  #主函数,输入为处理好的列表,输出为列表形式的出勤率和总分qizhong,qimo,numerate=0,0,0global sum,banjifor i in range(len(ls)):num=0pingshi=0for j in range(len(ls[i])):if ls[i][j].replace(".", "").isnumeric(): #检查是否为数字ls[i][j] = eval(ls[i][j])if j == 1 or j == 2 or j == 3:num += ls[i][j]elif j == 4 or j == 5 or j == 6:pingshi += ls[i][j]elif j == 7:qizhong = ls[i][j]elif j == 8:qimo = ls[i][j]banji+=numnumrate = (num / 3) * 100chuqinglv = "{:.2f}%".format(numrate)final1 = final(num, pingshi, qizhong, qimo)sum += final1final1 = "{:.2f}".format(final1)list.append(chuqinglv)list.append(final1)sum = sum / (len(list) / 2)banji=banji/(19*3)return listdef shuru(list,ls):   #将个人姓名和汉字部分加入,计算班级平均分,形成能够被csv文件读写的列表形式list[0] = '出勤率'list[1] = '总成绩'list1, list2 = [], []for i in range(len(list)):if i % 2 == 0:list1.append(list[i])else:list2.append(list[i])for i in range(len(list1)-1):ls[i].append(list1[i])ls[i].append(list2[i])ls[0].append('总成绩平均分')grades="{:.2f}".format(sum)ls[0].append('班级出勤率')chuqinglv="{:.2f}".format(banji)ls[1].append(grades)ls[1].append(chuqinglv)return ls#主程序ls=trans(fr)   #读入数据
list=main(ls)   #处理数据
li=shuru(list,ls)    #转化成输出数据
print(li) #检查输出内容
for row in li: #写入csv文件fw.write(",".join('%s' %id for id in row) + "\n")
fr.close()
fw.close()

python期中作业相关推荐

  1. Python011: Python大作业之移动的小火车动画(四)代码实现

    书接上文:Python010: Python大作业之移动的小火车动画(三)结果显示 0.注意: ​ 该项目使用的库和资源说明如下: pygame 2.0.1 (SDL 2.0.14, Python 3 ...

  2. 咕泡学院:(1)唐宇迪python课程作业

    超级详细的python思维导图见链接: https://download.csdn.net/download/m0_37957160/22526313 python数据科学必备工具实战思维导图链接: ...

  3. python编程书籍1020python编程书籍_代写INFT 1020作业、Database作业代做、Java课程作业代写、c++,Python编程作业代做...

    代写INFT 1020作业.Database作业代做.Java课程作业代写.c++,Python编程作业代做 日期:2020-04-25 10:27 INFT 1020 Database Fundam ...

  4. python实验报告代写价格_代写OS python程序作业、代写代写OS作业、代写OS实验报告...

    代写OS python程序作业.代写代写OS作业.代写OS实验报告 日期:2018-06-11 03:21 CSE 304 - Operating Systems DUE: June 11. Subm ...

  5. python做作业没头绪_使用Python做作业

    python做作业没头绪 Applying OpenCV and Tesseract to do your math-homework 应用OpenCV和Tesseract进行数学作业 The pos ...

  6. Python代写CSSE1001/7030 python程序作业、代做python CSSE1001/7030程序作业、 代写CSSE1001/7030 python 作业...

    Python代写CSSE1001/7030 python程序作业.代做python CSSE1001/7030程序作业. 代写CSSE1001/7030 python 作业 Uno++ Assignm ...

  7. 代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...

    代写CO 353课程作业.代做Python程序设计作业.代写Python语言作业 日期:2020-03-17 11:22 CO 353 - Homework assignment 4 Winter ' ...

  8. python实验报告代写_TensorFlow作业代写、代做Python程序语言作业、代写github课程作业、Python实验作业代写...

    TensorFlow作业代写.代做Python程序语言作业.代写github课程作业.Python实验作业代写 日期:2019-07-10 10:34 Python Practical Examine ...

  9. 代写python作业费用标准_代做159.272作业、代写Programming Paradigms作业、代做Python实验作业、代写Java/c++编程作业代写Database|代做R...

    代做159.272作业.代写Programming Paradigms作业.代做Python实验作业.代写Java/c++编程作业代写Database|代做RComputational Thinkin ...

最新文章

  1. UNICODE转多字节
  2. 【Python】while里面是负数时条件还为真吗?
  3. FPGA基础之逻辑单元(LE or LC)的基本结构
  4. AI算法岗为什么都要求C++?
  5. 容器编排技术 -- Kubernetes kubectl rolling-update 命令详解
  6. thinkphp count distinct
  7. 雕刻在LINUX内核中的LINUS故事
  8. 如何利用c语言写九九乘法表
  9. CodeMeter服务无法启动
  10. Word设置子标题跟随上级标题变化
  11. 鹅厂打响互联网大厂校招第一枪!
  12. mysql spj_MySQL查询优化器--非SPJ优化--ORDERBY优化
  13. 华为路由器负载均衡_华为AR路由器配置双出口静态IP双链路负载 | 铭泰网络
  14. 谭浩强c程序设计试题汇编第三版 第四章解析
  15. VS2012源代码管理没有AnkhSVN
  16. C语言(宏,内存,地址,指针,解引用)
  17. 高中计算机专业教师 教学计划,信息技术教师教学计划
  18. python批量自动化工作
  19. ctab法提取dna流程图_CTAB法提取DNA原理及步骤、制胶、电泳
  20. python批量搜索关键字_python – 搜索多个关键字的字符串列表

热门文章

  1. winmail.dat
  2. cmd命令打开及切换目录路径
  3. FFMPEG转码及切片
  4. java宝典app,总结到位
  5. 顶级专家寄语OpenStack Days China,开源之火已成燎原之势
  6. Sublime插件安装
  7. java链表源码_JAVA之链表源码 - 飞翔的南极企鹅的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. Docker私服搭建
  9. xlwt 合并单元格内 富文本 同一单元格内多个样式
  10. OpenCV C++案例实战二《生成蒙太奇图像》