python正则表达式匹配选择题做答题机

       废话不多说直接上代码!

#!/usr/bin/python
#coding:utf-8
import re
import os
import time
#打开题库
with open('danxuan.txt','r',encoding='utf8') as f:
    st = f.read()
#打开或创建记录错题的文件
t = open('1.txt','a+')
a = 0
os.system('CLS')
for i in range(1,301):
    try:
        #匹配题目
        s = re.search('(' + str(i) + '\..*?)' + str(i + 1) + '\.', st, re.S)
        #去掉题库中括号中的答案
        kong = re.sub('( *([A-F]*)* *)', '( )', s.group(1))
        #去掉题库中下划线中的答案
        kong = re.sub('_+([A-F]*)_', '___', kong)
        #输出题目
        print(kong)
        #输入正确答案
        n = input("请输入答案:")
        #匹配选项
        key = re.search('( *([A-F]*) *)|_*([A-F]*)_',s.group(1))
        if key.group(1) == None :
            print('答案是:',key.group(2))
            if n == key.group(2):
            #每做对一个题目加一分
                a += 1
            else:
            #如果题目错误将他的题号写入1.txt
                t.write(str(i)+'\n')
        else:
            if n == key.group(1):
                a += 1
            else:
                t.write(str(i)+'\n')
            print('答案是:',key.group(1))
        input()
        #清屏
        os.system('CLS')
    except:
        pass
print("得分:", a)
time.sleep(5)

       代码很简单,下面是题库示例:

1.软件产品与物质产品有很大的区别,软件产品是一种(C)产品。
A.有形		B.消耗		C.逻辑		D.文档
2.软件开发中实现映射的基本手段是(D)
A.抽象		B.分层		C.隔离		D.建模
3.下列哪项不属于软件工程框架的三元组。(B)
A.目标		B.范围		C.原则		D.活动
4.下列哪个不是软件维护的类型。(D)
A.完善性维护		B.纠错性维护		C.适应性维护		D.更新性维护
5.只有高水平的(C),才能生产出高质量的软件产品。
A.软件开发技术		B.软件开发工具		C.软件工程管理		D.软件开发方法
6.获取正确软件的关键是(A)
A.开发逻辑		B.开发团队		C.人员素质		D.明确需求
7.按照(B),可以将软件生存周期过程分为基本过程.支持过程和组织过程。
A.软件开发活动的层次关系
B.软件开发工作的主体
C.软件开发项目的结构
D.软件开发任务的重要程度
8.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是(C)。
A.演化模型		B.瀑布模型		C.喷泉模型		D.增量模型
9.与软件工程不同,(A)是系统工程所追求的目标。
A.最优化		B.系统化		C.一体化		D.情境化
10.下面不属于需求的基本性质是(D)
A.必要性		B.无歧义性		C.可测性		D.可扩展性
11.下列需求属于性能需求的是(A)
A.并发访问数		B.网络协议		C.异常响应		D.用户友好
12.下列需求属于外部接口需求的是(A)
A.第三方插件		B.安全隐私		C.编程语言		D.字体字号
13.下列需求属于设计约束的是(B)
A.响应时间		B.运行平台		C.错误处理		D.可维护
14.当无法与用户进行直接交流时,可采用(A)的需求发现方式。
A.自悟		B.提炼		C.小组会		D.思考
15.下述情况分别最适合采取哪种需求发现的方式(A)
① 为解决生活中遇到的麻烦事而开发的软件
② 有较多繁琐环节的社区医保系统的开发
③ 某小型团体组织开发其内部人员管理系统
④ 某大型连锁集团开发集团人员管理系统
⑤ 某专业化软件外包公司接手烂尾的软件开发项目
A.①-自悟;②-观察;③-交流;④-小组会;⑤-提炼
B.①-观察;②-自悟;③-小组会;④-交流;⑤-提炼
C.①-自悟;②-交流;③-观察;④-提炼;⑤-小组会
D.①-提炼;②-自悟;③-交流;④-观察;⑤-小组会
16.需求规约是一个软件产品/系统的(C)
A.开发模型		B.框架模型		C.概念模型		D.功能模型
17.在需求分析阶段会形成(C)的测试计划。
A.单元测试		B.集成测试		C.确认测试		D.系统测试
18.关于软件开发方法,以下说法正确的是(D)
A.软件开发方法是指软件开发过程所遵循的办法和步骤
B.软件开发活动的目的是有效地得到一个运行的系统及其支持文档且满足有关的质量要求
C.软件开发方法学指的是规则.方法和工具的集成
D.以上说法都正确
19.需求分析的目标不包括(C)
A.解决需求陈述中的歧义.不一致的问题		B.作为开发人员和客户间技术契约的基础
C.给出解决问题的具体算法和数据结构		D.给出问题的形式化或半形式化的描述
20.通过__B____可以完成数据流图的细化
A.结构分解		B.功能分解		C.数据分解		D.系统分解
21.数据字典一般不包括下列选项中的____D____条目
A.数据流		B.数据存储		C.加工		D.数据项
22.结构化设计的目标是__D_____
A.建立系统软件模型						B.建立软件体系结构和详细的处理算法
C.产生设计规格说明书						D.以上全部
23.概要设计不包括___D____
A.体系结构设计		B.接口设计		C.数据设计		D.数据结构设计
24.模块结构图中,如果两个模块之间有直线连接,表示他们之间存在___A___关系
A.调用		B.组成		C.连接		D.顺序执行
25.关于概要设计阶段的任务,以下说法错误的是__C____
A.主要任务是将DFD转为MSD
B.针对不同类型的DFD有不同的设计方法
C.精化MSD不属于概要设计阶段的任务
D.根据穿越系统边界的数据流确定系统与外界的接口
26.对于变换设计的基本步骤,正确的顺序是__C____
①确定输入.变换.输出三部分之间的边界
②系统模块结构图顶层和第一层的设计
③复审并精化系统需求模型
④自顶向下,逐步求精
①②③④		B.②①③④		C.③①②④		D.①③②④
27.下列说法错误的是___B___
A.变换型DFD是由输入.变换和输出三部分组成
B.变换设计中,有几个物理输入就设计几个输入模块
C.事务型DFD一般只接受一个输入数据
D.通常来说,变换型数据流图更加常见,而事务型数据流图往往作为局部出现
28.关于事务设计,下列说法正确的是__B____
A.事务设计的第一步是确定事务处理中心
B.在第一级分解中,需要为每一条活动路径设计一个事务处理模块
C.在第一级分解中,需要分别设计输入输出模块
D.在第二级分解中,对各条路径的细化类似于变换设计的细化过程
29.软件概要设计结束后得到__B____
A.初始化的模块结构图			B.精化的模块结构图
C.模块详细的算法				D.程序编码
30.一个模块把一个数值量作为参数传送给另一模块,这两个模块之间的耦合是(B)
A.逻辑耦合		B.数据耦合		C.控制耦合		D.内容耦合
31.下列几种耦合中,___D_____的耦合性最强。
A.公共耦合		B.数据耦合		C.控制耦合		D.内容耦合
32.为了提高模块的独立性,模块内部最好是____C__
A.逻辑内聚		B.时间内聚		C.功能内聚		D.通信内聚
33.通信内聚是指___B___
A.把需要同时执行的动作组合在一起形成的模块
B.各处理使用相同的输入数据集或产生相同的输出数据集
C.一个模块内各个元素都密切相关于同意功能且必须顺序执行
D.模块内所有元素共同完成一个功能,缺一不可
34.关于模块的扇入扇出,以下说法正确的是___C____
A.扇入表示有多少个上层模块直接或间接调用它
B.模块扇入高时应当重新分解,以消除控制耦合的情况
C.一个模块的扇出太多,说明该模块过分复杂,缺少中间层
D.一个模块的扇入太多,说明该模块过分复杂,缺少中间层
35.划分模块时,一个模块的__A____
A.作用范围应在其控制范围内			B.控制范围应在其作用范围内
C.作用范围与控制范围互不包含			D.作用范围与控制范围不受任何限制
36.在对初始的MSD精化过程中,将多个模块公用的子功能独立出来,形成一个新的模块,这利用了哪一条启发式规则?(A)
A.改进软件结构,提高模块独立性		B.模块规模适中,每页60行语句
C.模块的作用域力争在控制域之内		D.降低模块接口的复杂性
37.接口设计的主要内容是__D_____
A.模块或软件构件间的接口设计			B.软件与其他软硬件系统之间的接口设计
C.软件与用户之间的交互设计			D.以上都是
38.用户界面应具备的特性中,最重要的是___A___
A.可使用性		B.灵活性		C.可靠性		D.可扩展性
39.设计人机交互的界面时,应当遵循一定的设计原则,不包括___D___
A.操作步骤少		B.提供undo功能		C.减少人脑的记忆负担		D.增加复杂的功能
40.下面哪种类型的数据适合用文件进行存储?(B)
A.bbs上的用户名和密码				B.视频网站上的视频
C.社交网站上的动态					D.购物网站上用户的交易记录
41.详细设计的任务是定义每个模块的___C____
A.外部特性		B.内部特性		C.算法和数据格式		D.功能和输入输出数据
42.程序控制分为_____C_______三种基本结构
A.分块.顺序.循环					B.顺序.嵌套.选择
C.顺序.选择.循环					D.递归.堆栈.队列
43.下面哪条属于伪码的优点?(A)
A.不仅可以作为设计工具,还可以作为注释工具		B.形象直观
C.便于描述较为复杂的条件组合						D.支持逐步求精
44.下面哪条属于程序流程图的优点?(C)
A.支持逐步求精						B.便于表达数据结构
C.描绘直观,便于掌握					D.程序员可以很早地开始考虑程序的控制流程
45.以下说法正确的是(B)
A.程序流程图是一种算法描述工具		B.PAD图是一种描述程序逻辑结构的工具
C.PAD图又叫盒图		D.N-S图相对于PAD图的优点在于其支持自顶向下逐步求精的设计
46.概要设计规约不应包括__C____
A.软件测试方面的要求和说明
B.系统环境的设定
C.各处理过程的算法
D.文件结构和全局数据
47.关于软件设计规约,以下说法错误的是__C____
A.详细设计规约对应于系统的单元测试
B.详细设计规约主要作为软件设计人员与编程人员之间交流的媒体
C.概要设计规约对应于系统的确认测试
D.概要设计规约主要作为软件项目管理人员.系统分析人员与设计人员之间交流的媒体
48. 下面的__B____不是模块化设计的目的。
A.降低程序设计的复杂性  B.清楚地描述系统的功能和性能
C.易于维护和功能扩展  D.提高模块的可靠性和复用性
49.关于结构化方法的世界观说法错误的是__B____
A.一切系统都是由信息流构成的			B.信息流可以没有数据源和数据潭
C.信息处理主要表现为信息的流动		D.信息的流动离不开加工的处理
50.结构化方法的抽象层不包括___A___
A.问题层		B.需求分析层		C.设计层		D.实现层
51.结构化方法逐渐被面向对象方法所取代,以下哪一点不属于结构化方法的问题?(D)
A.分析阶段和设计阶段的术语空间不一致		B.解的结构没有保持原系统的结构
C.捕获的“过程”和“数据”都是易变的		D.没有提供控制信息复杂度的机制
52.针对对象之间的动态联系,以下说法正确的是__A___。
A.对象之间只能通过消息进行通信			B.一个对象可以直接使用另一个对象的属性
C.对象相互之间不允许进行联系				D.以上都对
53.以下哪一项描述了UML的作用___D__。
A.弥补应用系统和运行平台之间的“距离”
54.
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晶晶娃在战斗

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值