Rivers分享 http://blog.sciencenet.cn/u/sdssxwfd

博文

基于Python的数学专业题库(tex版)选择系统

已有 2703 次阅读 2021-12-10 15:59 |系统分类:教学心得

#从tex文件的试题库中自动选择组成tex格式的试题,建议题库的量要远大于要选的量

#2021年12月10日,只测试了有4个题型的情况

#试题库中的每个小题要在一行,不管该小题多长,tex中会自动换行,但行号不变。

import random

import time


start_time=time.time()

def examchoice(ftex,N,lh,le):#N选择个数.lh,le题目所有范围,选择该题型的

    num_series=range(lh,le)

    num=random.sample(num_series,N)

    result=""

    headtxt="\\begin{enumerate}\n"

    for i in num:

        result+=ftex[i]

    endtxt="\\end{enumerate}"

    result=headtxt+result+endtxt

    return result 

ftex=open("E:\\工作\\试题\\试题\\TEX试题库\\试题库.tex","r").readlines()

fhead=open("E:\\工作\\试题\\试题\\TEX试题库\\试题标准.tex","r").readlines()

fout=open("E:\\工作\\试题\\试题\\TEX试题库\\test\\test.tex","w")

texhead="" #试题的头

for i in range(19):

    texhead+=fhead[i]

texend="\n"+fhead[19]#试题的尾

lh,le,ti_type,ti_num="","","",0

for i in range(len(ftex)):

    if "section" in ftex[i]:

        ti_type+=ftex[i][9:-2]+","

        lh+=str(i+2)+","

        ti_num+=1

    if "end{enumerate}" in ftex[i]:

        le+=str(i-1)+","

lh,le=list(eval(lh)),list(eval(le))#得到每个题型在题库中的开始与结束行号

ti=ti_type.split(",")#把列表通过逗号分成序列

fout.writelines(texhead)

print("本题库共有{}种题型:".format(ti_num))

result,t_num,gs="",[],0

for i in range(len(ti)-1):

    print("{}.{}{}个".format(i+1,ti[i],le[i]-lh[i]+1))

    xuan=eval(input("选择该题型请按1,不选请按其他数字:"))

    if xuan==1:

        timu_num=eval(input("请输入该题型的个数:"))

        t_num.append(timu_num)

        result=examchoice(ftex,timu_num,lh[i],le[i])

        fout.writelines("\n"+"\section{"+ti[i]+"}\n")

        fout.writelines(result)

        gs+=1   #选择的题型个数

    else:

        continue

fout.writelines(texend)

fout.close()

for i in range(gs):

    print("本次共生成{}个{}".format(t_num[i],ti[i]))

end_time=time.time()

print("本次选题共历时{:.2f}秒".format(end_time-start_time))




https://blog.sciencenet.cn/blog-216525-1316022.html

上一篇:元胞自动机之退火规则
下一篇:matlab合并excel表格程序
收藏 IP: 61.179.124.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-22 23:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部