概述
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试卷自动生成(未使用正则表达式)编程要求所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复