我是靠谱客的博主 高贵火龙果,最近开发中收集的这篇文章主要介绍基础语法实现Python试卷自动生成(未使用正则表达式)编程要求,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python试卷自动生成

  • 编程要求
    • 解题思想
    • 缺陷
    • 具体代码

编程要求

题库里有70个判断题,30个选择题。用python编写程序,从题库中随机选题,组成两套试卷。每套试卷有5个判断题,5个选择题。为每套试卷生成标准答案。

解题思想

1.首先读取 题库.docx 里面的内容
2.将选择和判断分别存放到两个列表list中
3.将判断和选择分别切片存放到各自list中
4.随机生成两套试卷,每套里面有5个判断,5个选择
5.将生成的题和答案切片,分别存放到两个word中

缺陷

需要手动在题库中加入分隔符,有待改善。
以及应该可以使用正则表达式来更加优化。

具体代码

import docx
import random

def getText(filename):
    '''
    读入题库
    :param filename: 题库位置
    :return: 题库具体内容
    '''
    doc = docx.Document(filename)
    fullText = []
    for para in doc.paragraphs:
        fullText.append(para.text)
        pass
    return 'n'.join(fullText)
    pass

def test_split(test,division):
    '''
    切片操作
    :param test: 被切列表
    :param division: 分隔符
    :return: 切后列表
    '''
    test_list=test.split(division)
    return  test_list
    pass

def creat_test(doc1,doc2):
    '''
    将随机的选择题和判断题以及对应的答案写入列表
    :param doc1: 试卷word
    :param doc2: 答案word
    :return:
    '''
    i=0
    j=0
    while i<5:
        test_judge_3 = test_judge_2[i].split('&')
        i+=1
        # 将原题号切片
        test_judge_4 = test_judge_3[0].split('、',1)
        # 为考题与答案加上序号
        doc1.add_paragraph('{}、{}'.format(i,test_judge_4[1]))
        doc2.add_paragraph('{}、{}'.format(i,test_judge_3[1]))
        pass
    while j<5:
        test_pick_3=test_pick_2[j].split('&')
        j+=1
        # 将原题号切片
        test_pick_4= test_pick_3[0].split('、',2)
        # 为考题与答案加上序号
        doc1.add_paragraph('{}、{}'.format(i+j, test_pick_4[1]))
        doc2.add_paragraph('{}、{}'.format(i+j, test_pick_3[1]))
        pass
    pass

# 1.读取文件
test_bank = getText('C:\Users93932Desktoppython题库.docx')

# 2.分割判断和选择
test_bank_1=test_split(test_bank, '#')
test_judge=test_bank_1[0]
test_pick=test_bank_1[1]

# 3.逐题分割判断和选择
test_judge_1=test_split(test_judge, '*')
test_pick_1=test_split(test_pick, '*')

# 4.随机生成5道判断 5道选择
test_judge_2=random.sample(test_judge_1, 5)
test_pick_2=random.sample(test_pick_1, 5)

# 5.分割试题和答案 并且生成word文档
doc1_1 = docx.Document()
doc1_2 = docx.Document()
doc2_1 = docx.Document()
doc2_2 = docx.Document()
doc1_1.add_paragraph('考试题1')
doc1_2.add_paragraph('答案1')
doc2_1.add_paragraph('考试题2')
doc2_2.add_paragraph('答案2')
creat_test(doc1_1, doc1_2)
creat_test(doc2_1, doc2_2)
doc1_1.save('C:\Users93932Desktop试卷1.docx')
doc1_2.save('C:\Users93932Desktop答案1.docx')
doc2_1.save('C:\Users93932Desktop试卷2.docx')
doc2_2.save('C:\Users93932Desktop答案2.docx')

最后

以上就是高贵火龙果为你收集整理的基础语法实现Python试卷自动生成(未使用正则表达式)编程要求的全部内容,希望文章能够帮你解决基础语法实现Python试卷自动生成(未使用正则表达式)编程要求所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部