美文网首页
将题目与答案整合到一起的 python 代码

将题目与答案整合到一起的 python 代码

作者: 孙庚辛 | 来源:发表于2023-10-18 21:42 被阅读0次

    比如原先 word 文档里的内容是:
    一、选择题(每小题2分)
    1.算法的计算量的大小称为计算的( )。 【北京邮电大学2000 二、3 (20/8分)】
    A.效率 B.复杂性 C.现实性 D.难度
    2.算法的时间复杂度取决于( )。  【中科院计算所 1998 二、1 (2分)】
    A.问题的规模 B.待处理数据的初态 C.A和B  D.都不是
    4.一个算法应该是( )。【中山大学 1998 二、1(2分)】
    A.程序 B.问题求解步骤的描述
    C.要满足五个基本特性 D.A和C.
    5.下面关于算法说法错误的是( )【南京理工大学 2000 一、1(1.5分)】
    A.算法最终必须由计算机程序实现
    B.为解决某问题的算法同为该问题编写的程序含义是相同的
    C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的

    1. 下面说法错误的是( )【南京理工大学 2000 一、2 (1.5分)】
      (1)算法原地工作的含义是指不需要任何额外的辅助空间
      (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
      (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
      (4)同一个算法,实现语言的级别越高,执行效率就越低
      A.(1) B.(1),(2) C.(1),(4) D.(3)
      7.从逻辑上可以把数据结构分为( )两大类。【武汉交通科技大学 1996 一 、4(2分)】
      A.动态结构、静态结构 B.顺序结构、链式结构
      C.线性结构、非线性结构 D.初等结构、构造型结构
      8.以下与数据的存储结构无关的术语是( )。【北方交通大学 2000 二、1(2分)】
      A.循环队列 B. 链表 C. 哈希表 D. 栈
      9.以下数据结构中,哪一个是线性结构( )?【北方交通大学 2001 一、1(2分)】
      A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串
      10.以下那一个术语与数据的存储结构无关?( )【北方交通大学 2001 一、2(2分)】
      A.栈 B. 哈希表 C. 线索树 D. 双向链表
      11.在下面的程序段中,对x的赋值语句的频度为( )【北京工商大学 2001 一、10(3分)】
      FOR i:=1 TO n DO
      FOR j:=1 TO n DO
      x:=x+1;
      A. O(2n) B.O(n) C.O(n2) D.O(log2n)
      12.程序段 FOR i:=n-1 DOWNTO 1 DO
      FOR j:=1 TO i DO
      IF A[j]>A[j+1]
      THEN A[j]与A[j+1]对换;
      其中 n为正整数,则最后一行的语句频度在最坏情况下是( )
      A. O(n) B. O(nlogn) C. O(n3) D. O(n2) 【南京理工大学1998一、1(2分)】
      13.以下哪个数据结构不是多型数据类型( )【中山大学 1999 一、3(1分)】
      A.栈 B.广义表 C.有向图 D.字符串
      14.以下数据结构中,( )是非线性数据结构【中山大学 1999 一、4】
      A.树 B.字符串 C.队 D.栈
    2. 下列数据中,( )是非线性数据结构。【北京理工大学 2001 六、1(2分)】
      A.栈 B. 队列 C. 完全二叉树 D. 堆
      16.连续存储设计时,存储单元的地址( )。【中山大学 1999 一、1(1分)】
      A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续
      17.以下属于逻辑结构的是( )。【西安电子科技大学应用 2001一、1】
      A.顺序表 B. 哈希表 C.有序表 D. 单链表

    答案:
    1.B 2.C 3.B 4.D 5.C 6.C 7.D 8.D 9.A 10.C 11.D 4.D 5.A 6.C 7.A 8.C

    经过以下代码整理, 可以生成后面格式的文本。

    from docx import Document
    from docx.shared import Inches
    import re
    import io
    
    def process_questions(doc):
        questions = []
        answers = []
        images = []
        question_start = False
        answer_start = False
        current_question = None
    
        for i, para in enumerate(doc.paragraphs):
            if '选择题' in para.text or '判断题' in para.text:
                question_start = True
                answer_start = False
            elif '答案' in para.text:
                question_start = False
                answer_start = True
            elif question_start:
                if para.text.split('.', 1)[0].isdigit():
                    current_question = para.text.split('.', 1)[1]
                    questions.append([current_question])
                elif para.text.split('. ', 1)[0].isdigit():
                    current_question = para.text.split('. ', 1)[1]
                    questions.append([current_question])
                else:
                    # 用正则表达式找到所有的选项, 更准确地匹配选项
                    options = re.split(r'(A[..][^B-D]+)|(B[..][^A,C-D]+)|(C[..][^A-B,D]+)|(D[..][^A-C]+)|(E[..][^A-D]+)|(F[..][^A-E]+)|(G[..][^A-F]+)', para.text)
                    options = [option for option in options if option and not option.isspace() and len(option) > 1]
                    questions[-1].extend(options)
            elif answer_start:
                print(para.text)
                # 用正则表达式找到所有的答案,允许题号和答案之间有空格
                line_answers = re.findall(r'\d+[..]\s*(\w+)', para.text)
                print(line_answers)
                answers.extend(line_answers)
    
            # Check if the paragraph contains an image
            for rel in doc.part.rels.values():
                if "image" in rel.reltype:
                    for run in para.runs:
                        if run._r.getchildren():
                            for child in run._r.getchildren():
                                if '{http://schemas.openxmlformats.org/drawingml/2006/main}blip' in child.tag:
                                    images.append((i, rel.rel_id))
    
        return questions, answers, images
    
    def modify_questions(doc, questions, answers, images):
        question_counter = 1
        image_counter = 0
        for i, question_parts in enumerate(questions):
            # Check if there is an image before this question
            while image_counter < len(images) and images[image_counter][0] < i:
                rel_id = images[image_counter][1]
                image_data = old_doc.part.rels[rel_id].rel.element.image_part.blob
                image_stream = io.BytesIO(image_data)
                doc.add_picture(image_stream)
                image_counter += 1
    
            if i < len(answers):
                answer = answers[i].strip().upper()
                if len(answer) > 1:
                    question_type = '[多选题]'
                else:
                    question_type = '[单选题]'
                question_line = str(question_counter) + '、' + question_parts[0] + '( ' + answer + ' )' + question_type + ' [2分]'
                doc.add_paragraph(question_line)
                for option in question_parts[1:]:
                    doc.add_paragraph(option)
                doc.add_paragraph('难易度:2')
                doc.add_paragraph('解析:')
                doc.add_paragraph('知识点:数据结构概述')
                doc.add_paragraph('标签:数据结构概述')
                doc.add_paragraph('课程名称:数据结构')
                doc.add_paragraph('习题用途:通用题')
                doc.add_paragraph('\n')
                question_counter += 1  # Increment the question counter
    
        # Add any remaining images
        while image_counter < len(images):
            rel_id = images[image_counter][1]
            image_data = old_doc.part.rels[rel_id].rel.element.image_part.blob
            image_stream = io.BytesIO(image_data)
            doc.add_picture(image_stream)
            image_counter += 1
    
    old_doc = Document('1数据结构概述.docx')
    questions, answers, images = process_questions(old_doc)
    new_doc = Document()
    modify_questions(new_doc, questions, answers, images)
    new_doc.save('output.docx')
    
    

    1、算法的计算量的大小称为计算的( )。 【北京邮电大学2000 二、3 (20/8分)】 ( B )[单选题] [2分]
    A.效率
    B.复杂性
    C.现实性
    D.难度
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    2、算法的时间复杂度取决于( )。  【中科院计算所 1998 二、1 (2分)】 ( C )[单选题] [2分]
    A.问题的规模
    B.待处理数据的初态
    C.A和B  
    D.都不是
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    3、一个算法应该是( )。【中山大学 1998 二、1(2分)】( B )[单选题] [2分]
    A.程序
    B.问题求解步骤的描述
    C.要满足五个基本特性
    D.A和C
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    4、下面关于算法说法错误的是( )【南京理工大学 2000 一、1(1.5分)】( D )[单选题] [2分]
    A.算法最终必须由计算机程序实现
    B.为解决某问题的算法同为该问题编写的程序含义是相同的
    C. 算法的可行性是指指令不能有二义性
    D. 以上几个都是错误的
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    5、下面说法错误的是( )【南京理工大学 2000 一、2 (1.5分)】( C )[单选题] [2分]
    (1)算法原地工作的含义是指不需要任何额外的辅助空间
    (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
    (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
    (4)同一个算法,实现语言的级别越高,执行效率就越低
    A.(1)
    B.(1),(2)
    C.(1),(4)
    D.(3)
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    6、从逻辑上可以把数据结构分为( )两大类。【武汉交通科技大学 1996 一 、4(2分)】( C )[单选题] [2分]
    A.动态结构、静态结构
    B.顺序结构、链式结构
    C.线性结构、非线性结构
    D.初等结构、构造型结构
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    7、以下与数据的存储结构无关的术语是( )。【北方交通大学 2000 二、1(2分)】( D )[单选题] [2分]
    A.循环队列
    B. 链表
    C. 哈希表
    D. 栈
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    8、以下数据结构中,哪一个是线性结构( )?【北方交通大学 2001 一、1(2分)】( D )[单选题] [2分]
    A.广义表
    B. 二叉树
    C. 稀疏矩阵
    D. 串
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    9、以下那一个术语与数据的存储结构无关?( )【北方交通大学 2001 一、2(2分)】( A )[单选题] [2分]
    A.栈
    B. 哈希表
    C. 线索树
    D. 双向链表
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    10、在下面的程序段中,对x的赋值语句的频度为( )【北京工商大学 2001 一、10(3分)】( C )[单选题] [2分]
    FOR i:=1 TO n DO
    FOR j:=1 TO n DO
    x:=x+1;
    A. O(2n)
    B.O(n)
    C.O(n2)
    D.O(log2n)
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    11、程序段 FOR i:=n-1 DOWNTO 1 DO
    FOR j:=1 TO i DO
    IF A[j]>A[j+1]
    THEN A[j]与A[j+1]对换;
    其中 n为正整数,则最后一行的语句频度在最坏情况下是( ) ( D )[单选题] [2分]
    A. O(n)
    B. O(nlogn)
    C. O(n3)
    D. O(n2)
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    12、以下哪个数据结构不是多型数据类型( )【中山大学 1999 一、3(1分)】( D )[单选题] [2分]
    A.栈
    B.广义表
    C.有向图
    D.字符串
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    13、以下数据结构中,( )是非线性数据结构【中山大学 1999 一、4】( A )[单选题] [2分]
    A.树
    B.字符串
    C.队
    D.栈
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    14、下列数据中,( )是非线性数据结构。【北京理工大学 2001 六、1(2分)】( C )[单选题] [2分]
    A.栈
    B. 队列
    C. 完全二叉树
    D. 堆
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    15、连续存储设计时,存储单元的地址( )。【中山大学 1999 一、1(1分)】( A )[单选题] [2分]
    A.一定连续
    B.一定不连续
    C.不一定连续
    D.部分连续,部分不连续
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    16、以下属于逻辑结构的是( )。【西安电子科技大学应用 2001一、1】( C )[单选题] [2分]
    A.顺序表
    B. 哈希表
    C.有序表
    D. 单链表
    难易度:2
    解析:
    知识点:数据结构概述
    标签:数据结构概述
    课程名称:数据结构
    习题用途:通用题

    相关文章

      网友评论

          本文标题:将题目与答案整合到一起的 python 代码

          本文链接:https://www.haomeiwen.com/subject/evicidtx.html