生活情景引入:
我所在学校每年都要进行评奖评优,其依据主要为综合测评成绩(简称:综测),而综测成绩需要人工计算或用excel表格。
编程需求:
1.实现自动计算生成结果。
2.操作简单,要易于全系推广。
##编程 实现如下
# -*- coding: utf-8 -*-
import xdrlib ,sys
import xlrd
import xlwt
import numpy as np
import pandas
import time
def open_excel(filename): #打开excel的自定义函数
try:
data = xlrd.open_workbook(filename)
return data
except Exception :
print(u"打开文件失败")
print(u"失败原因:可能模板文件名被篡改")
def safe_float(number):
try:
return float(number)
except:
return 0
def print_ceter(str1): #居中显示
print(str1.center(180))
def logo():
print_ceter(u"欢迎使用综合测评个人计算系统")
print_ceter(u" 电气工程系综合测评专用")
print_ceter(u" 版权所有:zhoy工作室")
print_ceter(u" 作者:zhoy")
#数据计算
data = open_excel(u'信息填写模板(请勿更改文件名).xlsx') # 此处设置检索文件名;
table = data.sheets()[0] # 通过索引顺序获取第一个工作表
score1 = table.row_values(3) # 获取第4行数据成绩所在行1
score2 = table.row_values(6) # 获取第7行数据成绩所在行2
credit1 = table.row_values(4) # 获取第5行数据学分所在行1
credit2 = table.row_values(7) # 获取第6行数据学分所在行2
other = table.row_values(10) # 获取第11行数据体育、德育所在行
sum_zhiyu = 0.0 # 智育原始成绩
sum_zhiyu1 = 0.0 # 智育原始成绩1
sum_zhiyu2 = 0.0 # 智育原始成绩2
sum_deyu = 0.0 # 德育原始成绩
sum_tiyu = 0.0 # 体育原始成绩
sum_credit = 0.0 # 总学分1
temp =0.0
sum_tiyu = (other[0] + other[1]) / 2
sum_deyu = (other[2] + other[3]) / 2
j = 0
for i in range(1, len(score1)):
if score1[i] != "":
temp = safe_float(score1[i]) * safe_float(credit1[i])
sum_zhiyu1 = sum_zhiyu1 + temp
sum_credit = sum_credit + safe_float(credit1[i])
else:
j += 1
for i in range(1, len(score2)):
if score2[i] != "":
temp = safe_float(score1[i]) * safe_float(credit1[i])
sum_zhiyu2 = sum_zhiyu2 + temp
sum_credit = sum_credit + safe_float(credit2[i])
else:
j += 1
sum_zhiyu = (sum_zhiyu1 + sum_zhiyu2) / sum_credit
if not j== 0:
print(u"温馨提醒:数据中有空白数据:", j,"对" ,"请核对是否正常" )
print_ceter(u"综合测评报告")
print(u"测评总分:", ("%.2f" % (sum_zhiyu * 0.7 + sum_deyu * 0.25 + sum_tiyu * 0.05)))
print(u"智育成绩:", ("%.2f" % sum_zhiyu), end="")
print(u" 智育积分:", ("%.2f" % (sum_zhiyu * 0.7)))
print(u"德育成绩:", ("%.2f" % sum_deyu), end="")
print(u" 德育积分:", ("%.2f" % (sum_deyu * 0.25)))
print(u"体育成绩:", ("%.2f" % sum_tiyu), end="")
print(u" 体育积分:", ("%.2f" % (sum_tiyu * 0.05)))
if __name__ == "__main__":
logo()
print_ceter(u"本程序由zhoy工作室提供技术支持")
print_ceter(u"如有疑问及建议请联系我们")
print_ceter(u"工作室网站:http://www.zhoystudio.work")
print_ceter(u"工作室邮箱:zhoystudio@163.com")
print_ceter(u"微信公众号:zhoy工作室")
print_ceter(u"")
print_ceter(u"如要再次使用,请填写数据后重新打开本程序 ")
input()
附件:模板表《信息填写模板(请勿更改文件名).xlsx》
运行结果: