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

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

比如原先 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

解析:

知识点:数据结构概述

标签:数据结构概述

课程名称:数据结构

习题用途:通用题

目录
相关文章
|
9天前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
107 26
|
12天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
104 1
|
15天前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
|
6天前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
150 104
|
6天前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
214 99
|
13天前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
186 102
|
6天前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
85 7
|
11天前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
133 2
|
15天前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
54 4
|
8天前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。

热门文章

最新文章

推荐镜像

更多