美文网首页
将题目与答案整合到一起的 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
解析:
知识点:数据结构概述
标签:数据结构概述
课程名称:数据结构
习题用途:通用题

相关文章

  • 关于Thread的join方法

    题目 以下代码的输出什么? 分析与解答 答案是: Thread.join方法是将指定线程加入当前线程,将两个交替执...

  • python版代码整洁之道

    原文:https://github.com/zedr/clean-code-python python 版的代码整...

  • 扣丁学堂Python开发实现秒杀功能及代码

    今天扣丁学堂Python培训课程主要给大家分享关于Python实现秒杀功能的具体代码,下面我们一起来看一下吧。 整...

  • 类2

    面向对象的三大特性:封装、多态、继承,其中最重要的特性是封装。封装指的是将数据和功能都整合到一起。python的c...

  • 算功@LeetCode:StringToInteger(atoi

    Log 【170412】完成 01 版代码(Python)与 01 版笔记 【170416】看完参考答案并记录思路...

  • Python基础与科学计算常用方法

    Python基础与科学计算常用方法 本文使用的是Jupyter Notebook,Python3。你可以将代码直接...

  • 2020-09-11

    Swift将全局范围内的首句可执行的代码作为程序的入口。 var 变量 let常量 元组:多种数据类型组合到一起 ...

  • 算功@LeetCode:Add Two Numbers

    Log 【170413】完成 01 版 Python 代码的书写 【170416】看完 Python 版参考答案,...

  • Python 2 to 3

    这篇博客主要讲讲Python2与Python3的少部分异同 使用2to3将代码移植到Python 3 print首...

  • Burpsuite Python插件开发 - 编程环境篇

    java2python 使用java2python将网上的java代码(如swing示例代码)转成python,方...

网友评论

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

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