• 全部
  • 7天学习
  • 问题求助
  • 公开课
  • 博文广场
  • 精选专栏
  • 公告栏
  • 交流反馈
  • 电子书
  • 代码块
  • Python技能树

day07该交作业了

poqweur 北京邮电大学 2021-09-26 09:22:34
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import random
import os
import xlrd
import xlwt


dir_path = './excel'  # 文件路径
file_type = 'xls'  # 文件后缀


# 生成姓名的函数
def generate_name():
    first_name = '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜'
    last_name = '豫章故郡洪都新府星分翼轸地接衡庐襟三江而带五湖'
    first_name = random.choice(first_name)
    last_name = "".join(random.choice(last_name) for i in range(2))
    return first_name + last_name


# 生成成绩
def generate_grade():
    return random.randint(0, 100)


# 生成文件
def generate_grade_excel(course, name_list):
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)
    wb = xlwt.Workbook()  # 创建表格
    sheet = wb.add_sheet('sheet1')  # 添加工作表
    sheet.write(0, 0, '姓名')
    sheet.write(0, 1, '期中成绩')
    sheet.write(0, 2, '期末成绩')
    sheet.write(0, 3, '平时成绩')
    sheet.write(0, 4, '学科得分')
    for index in range(1, len(name_list) + 1):
        mid = generate_grade()  # 期中成绩
        fin = generate_grade()  # 期末成绩
        usual = generate_grade()  # 平时成绩
        subj = int((mid + fin) * 0.35 + usual * 0.3)  # 计算学科成绩并取整
        sheet.write(index, 0, name_list[index - 1])
        sheet.write(index, 1, mid)
        sheet.write(index, 2, fin)
        sheet.write(index, 3, usual)
        sheet.write(index, 4, subj)
        wb.save(dir_path + '/' + course + '.xls')


# 开始执行生成文件
def create_tables():
    namelist = [generate_name() for i in range(50)]
    for i in ['大学物理', '高等数学', '大学英语', 'Python程序设计']:
        generate_grade_excel(i, namelist)


# 获取文件名
def get_all_excel(walk_path):
    file_list = []
    for root_dir, sub_dir, files in os.walk(r'' + walk_path):
        for file in files:
            if file.endswith(file_type):
                file_name = os.path.join(root_dir, file)
                file_list.append(file_name)
    return file_list


# 读取所有文件学科成绩汇总
def summary():
    file_list = get_all_excel(dir_path)
    stu = {}
    cursor = [os.path.basename(file).replace('.xls', '') for file in file_list]
    for file in file_list:
        wb = xlrd.open_workbook(file)
        sheet = wb.sheet_by_index(0)
        for index in range(1, sheet.nrows):
            stu.setdefault(sheet.cell(index, 0).value, []).append(sheet.cell(index, 4).value)
    wb = xlwt.Workbook()
    sheet = wb.add_sheet('sheet1')
    sheet.write(0, 0, '姓名')
    sheet.write(0, 1, cursor[0])
    sheet.write(0, 2, cursor[1])

    sheet.write(0, 3, cursor[2])
    sheet.write(0, 4, cursor[3])
    index = 1
    for name, grades in stu.items():
        sheet.write(index, 0, name)
        sheet.write(index, 1, grades[0])
        sheet.write(index, 2, grades[1])
        sheet.write(index, 3, grades[2])
        sheet.write(index, 4, grades[3])
        index = index + 1
    wb.save(dir_path + '汇总成绩.xls')


if __name__ == '__main__':
    create_tables()
    summary()

 

 

...全文
93 2 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复

还没有回复,快来抢沙发~

相关推荐
发帖
Python全栈技术社区
创建于2020-11-25

6548

社区成员

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践
帖子事件
创建了帖子
2021-09-26 09:22
社区公告

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践

  • 这里有最新最全的 Python 学习内容及资源,每月多达4次技术公开课
  • 这里有众多 Python 学习者,陪伴你一起交流成长
  • 这里有专业 Python 社区专家、讲师,帮助你跨越学习瓶颈,解决实操难题
  • 这里有丰富的社区活动,可以开阔眼界,结识更多同伴

【最新活动】:

  1. 周四技术公开课讲师招募中,点击查看详情
  2. “Python 社区专家团” 招募中,点击查看详情