python计算机二级选择题汇总14(易混淆)

问题描述:

python计算机二级选择题汇总14(易混淆)

问题解答:

有些函数比如ls.remove()、sorted( )返回值是新的一个列表还是旧的列表,需要搞清楚。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

问题描述: 

4、I/O方式中的程序查询方式是指()。
A.在程序执行前系统首先检查该程序运行中所需要的I/O设备是否准备好
B.当CPU需要执行I/O操作时,程序将主动查间I/O设备是否准备好
C.用程序启动I/O设备
D.用程序检查系统中I/O设备的好坏

问题解答:

在I/O方式中,程序查询方式的具体含义是:当CPU需要执行I/O操作时,程序将主动查询I/O设备是否准备好。如果设备已经准备好,CPU会执行I/O操作;如果设备还未准备好,CPU会持续查询并等待设备准备好后再执行I/O操作。

对照给出的选项:
A. 在程序执行前系统首先检查该程序运行中所需要的I/O设备是否准备好 - 这并不是程序查询方式的定义。
B. 当CPU需要执行I/O操作时,程序将主动查询I/O设备是否准备好 - 这正是程序查询方式的定义。
C. 用程序启动I/O设备 - 这并不准确描述程序查询方式的核心。
D. 用程序检查系统中I/O设备的好坏 - 这同样不是程序查询方式的定义。

因此,这道题的答案是B选项:当CPU需要执行I/O操作时,程序将主动查询I/O设备是否准备好。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

6、I/O方式中的程序中断方式是指()。
A.当出现异常情况时,计算机将停机
B.当出现异常情况时,计算机将启动I/O设备
C当出现异常情况时,CPU暂时停止当前程序的运行,转向执行相应的服务程序
D.当出现异常情况时,CPU将终止当前程序的运行

在I/O方式中,程序中断方式的具体含义是:当出现异常情况或者特殊情况时,CPU暂时停止当前程序的运行,转而执行对这些异常情况或者特殊情况进行处理的程序,处理结束之后再返回到现行程序的断点处继续运行

对照给出的选项:
A. 当出现异常情况时,计算机将停机 - 这并不准确描述程序中断方式。
B. 当出现异常情况时,计算机将启动I/O设备 - 这并不是程序中断方式的定义。
C. 当出现异常情况时,CPU暂时停止当前程序的运行,转向执行相应的服务程序 - 这正是程序中断方式的定义。
D. 当出现异常情况时,CPU将终止当前程序的运行 - 这与程序中断方式略有不同,因为中断后CPU会返回到原程序的断点处继续运行。

因此,这道题的答案是C选项:当出现异常情况时,CPU暂时停止当前程序的运行,转向执行相应的服务程序。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

8、下列叙述中正确的是()。
A进程一旦创建,即进入就绪状态
B.进程一旦进入运行状态,就会一直运行下去直到终止
C处于阻塞状态的进程,当阻塞原因解除后即进入运行状态
D进程在运行状态下,如果时间片用完,即进入阻塞状态

这道题的正确答案是A。

下面是对各个选项的解释:

A. 进程一旦创建,即进入就绪状态

  • 正确。在操作系统中,当一个进程被创建后,它通常会进入就绪状态,等待被调度器分配CPU资源来执行。

B. 进程一旦进入运行状态,就会一直运行下去直到终止

  • 错误。进程在运行状态下可能会被操作系统中断,以便其他进程也能获得CPU时间,这种机制通常称为时间片轮转调度。此外,进程也可能因为I/O操作或其他原因而进入阻塞状态。

C. 处于阻塞状态的进程,当阻塞原因解除后即进入运行状态

  • 错误。处于阻塞状态的进程在阻塞原因解除后会进入就绪状态,而不是直接进入运行状态。它需要等待CPU调度器再次分配CPU时间。

D. 进程在运行状态下,如果时间片用完,即进入阻塞状态

  • 错误。当时间片用完后,进程会被操作系统放回就绪队列,进入就绪状态,而不是进入阻塞状态。只有在需要等待某些事件(如I/O操作完成)时,进程才会进入阻塞状态。

因此,正确答案是A。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

9、下列叙述中正确的是( )。
A.虚拟存储器是对主存的扩展
B.虚拟存储器空间大小取决于CPU的运算速度
C.虚拟存诸器属于外存储器
D.虚拟存储器是对外存的扩展

这道题的正确答案是A。

下面是对各个选项的解释:

A. 虚拟存储器是对主存的扩展

  • 正确。虚拟存储器是一种内存管理技术,通过使用硬盘(外存储器)的一部分来扩展主存储器(RAM)的容量,使得系统可以运行比物理内存更大的程序。它让程序员感觉有更大的内存空间可以使用,虽然实际的物理内存是有限的。

B. 虚拟存储器空间大小取决于CPU的运算速度

  • 错误。虚拟存储器的大小主要取决于操作系统和硬件架构的设计,例如地址总线的位数,而不是CPU的运算速度。

C. 虚拟存储器属于外存储器

  • 错误。虚拟存储器本身不是一种存储设备,而是一种内存管理技术。它利用外存储器(如硬盘)的一部分,但虚拟存储器的概念和实现涉及的是主存储器的扩展。

D. 虚拟存储器是对外存的扩展

  • 错误。虚拟存储器是对主存的扩展,而不是对外存的扩展。它使用外存来扩展主存的容量,但核心目的是扩展主存,而不是扩展外存。

因此,正确答案是A。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

10、下面关于多道程序环境下特点描述正确的是()。
A进程调度负责所有系统资源的分配
B.各进程之间不存在相互制约关系
C程序和计算机执行程序的活动不再一一对应
D.各进程被创建的顺序与各进程终止的顺序是一致的

这道题的正确答案是C。

下面是对各个选项的解释:

A. 进程调度负责所有系统资源的分配

  • 错误。进程调度负责CPU时间的分配,但不负责所有系统资源的分配。其他资源的分配,如内存、I/O设备等,通常由不同的子系统或管理模块负责。

B. 各进程之间不存在相互制约关系

  • 错误。在多道程序环境中,进程之间往往存在相互制约关系,例如同步和互斥。一个进程可能需要等待另一个进程释放某些资源才能继续执行。

C. 程序和计算机执行程序的活动不再一一对应

  • 正确。在多道程序环境下,多个程序可以同时在一个CPU上执行(通过时间共享),因此程序和计算机执行程序的活动不再一一对应。一个物理CPU可以在不同时间片执行不同的进程。

D. 各进程被创建的顺序与各进程终止的顺序是一致的

  • 错误。进程的创建和终止顺序不一定一致。一个进程可以在其他进程之前或之后被创建和终止,取决于它们的执行时间和资源需求。

因此,正确答案是C。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

14、表达式str(10/2)的结果是()。
A.'10/2'
B.'5
C.ValueError
D.'5.0'

表达式 str(10/2) 的结果是 D. '5.0'

解释如下:

  1. 10/2 进行除法运算,结果是 5.0(浮点数)。
  2. str(5.0) 将浮点数 5.0 转换为字符串,因此结果是 '5.0'

因此,选项 D '5.0' 是正确答案。

除非用整除"//"最终结果是5。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

19、以下程序的输出结果是()。
import string
y1='a'
y2='asdf'
print(y1 in string.printable,y2 in string.printable)
A.False False
B.False True
C.True False
D.True True

string.printable:包含所有可打印字符的字符串,可打印字符为单个字符,包括数组 0-9,字符a-z等,不包括字符串,所以输出结果为True Flase。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

25、关于Python函数的描述错误的是( )。

A.函数内部修改全局变量必须用global声明

B.Python函数可以没有return语句,此时返回值为None

C.Python函数支持用名称传递参数

D.Python支持可选参数传递,但没有默认值的参数必须定义在有默认值参数的左侧

 Python中,根据实际参数的类型不同,函数参数的传递方式可分为2种,分别为值传递和引用(地址)传递:1、值传递:适用于实参类型为不可变类型(字符串、数字、元组);2、引用(地址)传递:适用于实参类型为可变类型(列表,字典)。两种方法中不包括名称传递参数。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

26、以下程序的输出结果是( )

def func(x =[],y=[6,7]):
    x.append(8)
    y.append(8)
    return(x+y)
a,b=[1,2],[3,4]
t=func(x=a)
t=func(y=b)
print(func(),end=";")

A.[8,6,7,8,8]
B.[8,8,6,7,8,8]
C.[8,8,6,7,8,8]
D.[8,6,7,8,8]

这道题,不要太关注t的变化,而是要时刻关注x,y的变换。append会导致x,y一直在变化。

推理如下:第一步,把x=a=[1,2]传入,y=[6,7],得到:a=[1,2,8],y=[6,7,8]。第二步,把y=[3,4]传进去,x=[8],b=[6,7,8]。第三步,把x=[8],y=[6,7,8]传入,得到[8,8,6,7,8,8]

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

27、以下程序的输出结果是( )。 

def mysort(ss,flag):
    if flag:
        return(sorted(ss,reverse = True))
    else:
        return(sorted(ss,reverse = False))
ss=[1,2,4,3]
print(mysort(ss,-1))

 

A.[3,4,2,1]
B.[1,2,3,4
C.[4,3,2,1]
D.[1,2,4,3]

分析,刚开始我觉得reverse=False,应该是升序,而事实上结果是降序。

在代码中,flag 参数的值为 -1,在 Python 中,任何非零数值都被视为 True,所以 if flag: 条件为真。因此,你的函数调用实际上等同于 mysort(ss, True),会返回一个降序排列的列表。

如果你想要升序排序,你可以将 flag 参数设为 0False,或者在调用函数时明确指定 flag=False

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

选D 

其他选项的输出如下所示,具体解释如下一篇博文所示。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

当列表长度是变换的时候、用i来遍历列表,这时遍历次数极其容易出错。

分析

  1. 初始化和第一个迭代:

    • 初始列表:ss = [2, 3, 6, 9, 7, 1]
    • 第一个元素 i = 2
    • min(ss) 是 1
    • ss.remove(1) 之后,列表变为 [2, 3, 6, 9, 7]
    • 打印 min(ss),输出 2
  2. 第二个迭代:

    • 当前列表:[2, 3, 6, 9, 7]
    • 第二个元素 i = 3
    • min(ss) 是 2
    • ss.remove(2) 之后,列表变为 [3, 6, 9, 7]
    • 打印 min(ss),输出 3
  3. 第三个迭代:

    • 当前列表:[3, 6, 9, 7]
    • 第三个元素 i = 9
    • min(ss) 是 3
    • ss.remove(3) 之后,列表变为 [6, 9, 7]
    • 打印 min(ss),输出 6

为什么只遍历了3次?

在 Python 中,当你在循环中修改列表的长度时,会导致一些意想不到的行为。让我们看看具体发生了什么:

  • 当你开始 for 循环时,Python 创建了一个迭代器来遍历列表 ss
  • 初始列表 ss 有 6 个元素,因此迭代器会计划遍历 6 次。
  • 然而,每次迭代中,你都会调用 ss.remove(min(ss)),这会修改列表的长度。

在你每次调用 remove 时,列表长度减少 1。但是,迭代器并不知道列表的长度已经改变,仍然基于原始列表长度进行迭代。因为你总是删除最小的元素,列表的剩余部分也在发生变化,导致最终的迭代次数减少。

在第三次迭代后,列表变为 [6, 9, 7],原本的第四个元素 9 现在变成了第二个元素。原来的第五个元素 7 现在变成了第三个元素。当 i 到达原本的第四个位置时,列表已经减少,因此迭代结束。

————————————————————————————————————

更详细的逐步调试:

  1. 初始列表:

    ss = [2, 3, 6, 9, 7, 1]
    
    • 迭代开始,列表有 6 个元素,计划遍历 6 次。
  2. 第一次迭代:

    • 当前列表:[2, 3, 6, 9, 7, 1]
    • i = 2
    • ss.remove(1),列表变为 [2, 3, 6, 9, 7]
    • 打印 2
  3. 第二次迭代:

    • 当前列表:[2, 3, 6, 9, 7]
    • i = 3
    • ss.remove(2),列表变为 [3, 6, 9, 7]
    • 打印 3
  4. 第三次迭代:

    • 当前列表:[3, 6, 9, 7]
    • i = 6
    • ss.remove(3),列表变为 [6, 9, 7]
    • 打印 6

由于每次移除最小元素,列表变短了,导致迭代器遍历的实际元素比最初计划的少。列表长度减少后,迭代器的行为就和预期的有差异。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

38、关于Pyinstaller_工具,下列说法正确的是( )

A.只能处理UTF-8编码形式的Python源文件

B生成单独的可执行文件时,图片等文件资源不能一并打包到可执行文件中

C能生成带有动态链接库的可执行文件

D不能为生成的可执行文件指定图标

使用pyinstaller库对源文件打包非常简单,在cmd中输入pyinstaller Python.文件名就可以,执行后,py文件所在目录将生成dist和build两个文件。其中build文件夹中保存的是临时文件目录可以安全删除。最终的打包程序在dst文件夹中。但是要注意源文件中必须是utf-8编码。
标准答案选的A,为什么读起来感觉C是正确的呢。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神笔馬良

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

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

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

打赏作者

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

抵扣说明:

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

余额充值