一、单选题
- 答案:D
- 解析:
0x10
是十六进制表示法,转换为十进制为16,print(x)
会输出十六进制数0x10
对应的十进制值16。
- 答案:C
- 解析:在
f = open('d:/a.txt', 'r')
中,f
是变量用于表示打开的文件对象;'r'
表示以只读方式打开文件;如果文件a.txt
不存在,使用'r'
模式打开会报错;'d:/a.txt'
是文件路径,代表d盘中名为a.txt
的文件。
- 答案:D
- 解析:
all
函数用于判断可迭代对象中的所有元素是否都为True
,在[1, True, True]
中,所有元素都为True
,所以结果为True
。
- 答案:B
- 解析:Python中合法的二进制表示以
0b
或0B
开头,后面只能包含0和1,A选项包含了C
和F
不是二进制合法字符;C选项包含了9不是二进制合法字符;B选项0B1010
是合法的二进制表示。
- 答案:A
- 解析:
tuple([2, 1, 3])
将列表转换为元组(2, 1, 3)
,然后将元组中的元素依次赋值给x
、y
、z
,所以y
的值为1。
- 答案:B
- 解析:给定的列表
ls
中包含3个元素,分别是[[1, 2, 3]]
、[[4, 5], 6]
、[[7, 8]]
,所以len(ls)
的结果为3。
- 答案:D
- 解析:
range
函数用于生成一个整数序列,range(1, 10, 2)
表示从1开始(包含1),每次增加2,到10结束(不包含10),生成的序列为[1, 3, 5, 7, 9]
,再用list
函数将其转换为列表。A选项list(range(0, 9))
生成的是[0, 1, 2, 3, 4, 5, 6, 7, 8]
;B选项list(range(1, 10))
生成的是[1, 2, 3, 4, 5, 6, 7, 8, 9]
;C选项list(range(0, 9, 2))
生成的是[0, 2, 4, 6, 8]
。
- 答案:C
- 解析:二维列表
data = [[1, 2], [3, 4]]
中,元素“3”位于第二个子列表(索引为1)的第一个位置(索引为0),所以表示为data[1][0]
。
- 答案:C
- 解析:首先
n = 2
,然后b = bool(n - 2)
,即b = bool(0)
,bool(0)
的值为False
,最后输出n
和b
的值,即2 False
。
- 答案:C
- 解析:用户输入10,
n = input("请输入一个整数: ")
将输入的字符串“10”赋值给n
,然后n ** n
尝试对字符串进行指数运算,会引发类型错误,所以会执行except
块中的代码,输出“程序执行错误”。
- 答案:A
- 解析:
reversed(range(10, 0, -2))
会生成一个从10开始(包含10),每次减2,到0结束(不包含0)的逆序序列,即[10, 8, 6, 4, 2]
,然后循环打印每个元素,元素之间用空格分隔,所以输出为2 4 6 8 10
。
- 答案:B
- 解析:冒泡排序第一趟会比较相邻的元素,如果顺序不对就交换。原始列表
l = [10, 1, 9, 6, 3, 4]
,第一趟排序过程为:比较10和1,交换得到[1, 10, 9, 6, 3, 4]
;比较10和9,交换得到[1, 9, 10, 6, 3, 4]
;比较10和6,交换得到[1, 9, 6, 10, 3, 4]
;比较10和3,交换得到[1, 9, 6, 3, 10, 4]
;比较10和4,交换得到[1, 9, 6, 3, 4, 10]
。
- 答案:B
- 解析:先计算
min(5, 1, 7)
,结果为1,然后计算max(3, 1)
,结果为3。
- 答案:D
- 解析:
set("中国")
得到的集合为{'中', '国'}
,set("美国")
得到的集合为{'美', '国'}
,两个集合求交集(&
操作),得到{'国'}
。
- 答案:A
- 解析:
try - except
语句、try - except - else
语句、try - except - finally
语句都可以用于异常处理结构中捕获特定类型的异常(except
后面可以指定异常类型),而if - elif - else
语句主要用于条件判断,不是用于异常处理中捕获异常的。
- 答案:D
- 解析:A选项
sum([1, 2, 3, 4]) = 1 + 2 + 3 + 4 = 10
;B选项sum((1, 2, 3), 4)
先计算sum((1, 2, 3)) = 1 + 2 + 3 = 6
,再加上4得到10;C选项sum([1, 2, 3], 4)
先计算sum([1, 2, 3]) = 1 + 2 + 3 = 6
,再加上4得到10;D选项sum([1, 2], [3, 4])
会将两个列表拼接成[1, 2, 3, 4]
,然后计算sum([1, 2, 3, 4]) = 1 + 2 + 3 + 4 = 10
,结果不是10(这里可能存在误解,按照常规理解,对两个列表求和不是直接将列表拼接后求和,而是分别对每个列表求和再相加,所以该选项结果不是10)。
- 答案:B
- 解析:
divmod
函数返回两个值,分别是除法的商和余数,divmod(40, 3)
的结果是(13, 1)
,表示40除以3商为13余数为1。
- 答案:D
- 解析:选择排序的基本思想是在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。原始列表
arr = [5, 33, 21, 67, 39, 73, 7, 43]
,循环4次的过程如下:
- 第一次循环:找到最小元素7,与第一个元素5交换,得到
[7, 33, 21, 67, 39, 73, 5, 43]
。
- 第二次循环:找到剩余元素中的最小元素21,与第二个元素33交换,得到
[7, 21, 33, 67, 39, 73, 5, 43]
。
- 第三次循环:找到剩余元素中的最小元素33,与第三个元素33交换(实际未交换),列表仍为
[7, 21, 33, 67, 39, 73, 5, 43]
。
- 第四次循环:找到剩余元素中的最小元素39,与第四个元素67交换,得到
[7, 21, 33, 39, 67, 73, 5, 43]
。
最终结果为[7, 21, 33, 39, 67, 73, 5, 43]
,选项中没有完全正确的,最接近的是D选项(可能是出题时选项设置存在问题)。
- 答案:C
- 解析:(23 = 8),(24 = 16),要表示10种不同信息,至少需要4位二进制数(因为3位二进制数最多表示8种不同信息,4位二进制数可以表示16种不同信息,满足表示10种信息的要求)。
- 答案:C
- 解析:
range(1, 6)
生成的序列是[1, 2, 3, 4, 5]
,循环中当i % 4 == 0
时,即i
为4时,执行continue
跳过本次循环,不输出4,其他数字正常输出,元素之间用逗号分隔,所以输出为1, 2, 3, 5,
。
- 答案:C
- 解析:算法的特性包括有穷性(必须在有限步骤内完成)、确定性(每个步骤含义确切)、可行性、输入(可以有0个或多个输入)、输出(必须有1个或多个输出)。所以算法必须有输出,选项C描述错误。
- 答案:C
- 解析:八进制10转换为十进制为(1×81 + 0×80 = 8),十六进制10转换为十进制为(1×161 + 0×160 = 16),它们相加的十进制结果为(8 + 16 = 24)。
- 答案:D
- 解析:字典
d = {"大海":"蓝色", "天空":"灰色", "大地":"黑色"}
,d["大地"]
会获取字典中键为“大地”的值,即“黑色”,输出时不带引号。
- 答案:A
- 解析:
open('city.csv', 'r').read().split(',')
会读取文件内容并以逗号分割成列表,文件内容中“巴巴多斯”和“白俄罗斯”之间有换行符\n
,所以分割后的结果为['巴哈马', '巴林', '孟加拉国', '巴巴多斯\n白俄罗斯', '比利时', '伯利兹']
。
- 答案:B
- 解析:
range(4)
生成的序列是[0, 1, 2, 3]
,list(range(4))
将其转换为列表,结果为[0, 1, 2, 3]
。
二、判断题
- 答案:正确
- 解析:
int('0x25', 16)
和int('25', 16)
都可以将十六进制数0x25
(或字符串“25”,当指定进制为16时会被当作十六进制数)转换为十进制数,结果为37。
- 答案:错误
- 解析:使用
open()
函数打开文件后,返回的是文件对象,通过文件对象的方法(如read
、readlines
等)可以读取文件内容并转换为相应的数据类型(如字符串、列表等),但打开文件本身返回的不是列表。
- 答案:正确
- 解析:数据根据其结构特点可以分为一维数据(如列表、元组中的单个序列)、二维数据(如表格形式的数据,可以用二维列表表示)和多维数据(如矩阵等更复杂的数据结构)。
- 答案:正确
- 解析:在
try - except - finally
语句中,finally
块中的语句无论是否发生异常都会执行,通常用于释放资源等操作。
- 答案:正确
- 解析:CSV文件的每一行可以看作是一维数据,在Python中可以用列表类型来表示每一行的数据,方便进行数据处理。
- 答案:错误
- 解析:二进制数
1010111
转换为十六进制的方法是,从右到左每4位一组,不足4位在左边补0,得到0101 0111
,然后分别将每组转换为十六进制,0101
转换为十六进制是5,0111
转换为十六进制是7,所以结果是57
,而不是A7
。
- 答案:错误
- 解析:
abs()
函数的功能是求绝对值,abs(-2.3)
的运行结果是2.3,而不是对小数进行取整。
- 答案:错误
- 解析:
chr()
函数用于将整数(代表ASCII码值或Unicode码值)转换为对应的字符,而不是将对象转换成字符串。
- 答案:正确
- 解析:
enumerate()
函数会将可迭代对象(如字符串、列表、元组等)组合为索引序列,同时返回数据和数据下标,例如for i, item in enumerate(['a', 'b', 'c'])
,i
会依次为0、1、2,item
会依次为'a'
、'b'
、'c'
。
- 答案:正确
- 解析:
senson = ["春", "夏", "秋", "冬"]
,senson.remove("秋")
会从列表中删除第一个值为“秋”的元素,列表变为["春", "夏", "冬"]
,然后输出该列表。
三、编程题
- 求一个四位数
- 思路:通过四层循环遍历所有可能的四位数(每位数字范围是0 - 9),根据题目条件构建两个五位数(在左边加8和在右边加6后的五位数),判断它们的和是否为121410,如果是则找到符合条件的四位数并输出。
- 读取学生信息
- 思路:使用
csv
模块读取subways.csv
文件中的数据,将每行数据(除了表头)的学号和身高信息提取出来,判断身高是否达到120,如果是则输出学号。
- 数字移动
- 思路:首先记录列表的初始长度,然后循环遍历列表,当遇到非零元素时,将其向前移动到合适位置(通过交换),最后将剩余位置填充为0,实现将所有零移动到列表尾的功能。