一、单选题
- 答案:B
- 解析:
map
函数会对可迭代对象中的每个元素应用指定的函数,map(int, L)
会将列表L
中的每个元素转换为整数,但返回的是一个map
对象,需要用list
函数将其转换为列表,所以正确写法是list(map(int, L))
。
- 答案:C
- 解析:
len
函数可以用于返回字符串中的字符数、列表中的元素个数等。len("I love China")
的结果为11(包括空格),而不是10。
- 答案:D
- 解析:一般情况下,Python正常处理程序时不会发生异常,但在遇到错误情况(如除数为0、访问不存在的变量等)时会引发异常。异常处理的目的是在程序出现异常时捕获并处理它,使程序不会因为异常而终止执行,并且合理的异常处理可以提高程序的健壮性和可读性,而不是降低可读性或使程序出现错误。
- 答案:C
- 解析:
w+
模式以读写方式打开文件,如果文件存在则清空内容,如果不存在则创建新文件;a+
模式以读写方式打开文件,文件指针在文件末尾,如果文件不存在则创建新文件。它们的相同点是若文件不存在就创建。w+
会覆盖写,a+
是追加写,w+
每次写会覆盖上一次内容,a+
不会覆盖原有内容而是在末尾追加。
- 答案:A
- 解析:Python标准库
math
中sqrt
函数用于计算平方根,max
函数用于返回最大值,min
函数用于返回最小值,print
函数用于输出内容,与计算平方根无关。
- 答案:A
- 解析:二分法是每次将搜索区间缩小一半,通过不断比较中间值来确定目标元素所在的区间,题目中班主任通过不断将视频进度缩小一半来查找物品丢失的时间点,体现了二分法的思想。选择排序法是用于对数据进行排序的算法;递归法是函数调用自身的方法;迭代法是通过重复执行一系列步骤来解决问题的方法,均不符合本题描述。
- 答案:B
- 解析:
filter
函数用于过滤序列,根据指定的函数条件过滤掉不符合条件的元素,在本题中可以使用filter
函数结合一个判断是否为3的倍数的函数来去掉列表中3的倍数的元素。map
函数主要用于对序列中的每个元素应用一个函数进行转换;zip
函数用于将多个可迭代对象中对应位置的元素组合成元组;enumerate
函数用于将一个可迭代对象组合为索引序列,同时列出数据和数据下标,均不能实现本题的功能。
- 答案:C
- 解析:
range(3, 6)
生成的序列是[3, 4, 5]
,list(range(3, 6))
将其转换为列表,结果为[3, 4, 5]
。
- 答案:A
- 解析:
divmod
函数返回两个值,分别是除法的商和余数,divmod(34, 8)
的结果是(4, 2)
,表示34除以8商为4余数为2。
- 答案:A
- 解析:八进制10转换为十进制的计算方法是(1×81 + 0×80 = 8)。
- 答案:B
- 解析:
round
函数用于对浮点数进行四舍五入,round(a, 2)
表示将浮点数a
保留两位小数,3.1415926
保留两位小数后为3.14
。
- 答案:D
- 解析:Python内置函数
min
用来返回序列中的最小元素,max
函数返回序列中的最大元素,mini
不是Python内置函数,read
函数通常用于文件读取等操作,与返回序列最小元素无关。
- 答案:D
- 解析:
divmod(37, 9)
的结果是(4, 1)
,即商为4余数为1。print((37 // 9, 37 % 9))
会输出一个包含商和余数的元组(4, 1)
,与divmod
函数的结果相同。A选项print(37 % 9, 37 // 9)
输出顺序错误;B选项print((37 % 9, 37 // 9))
括号位置错误;C选项print(37 // 9, 37 % 9)
输出顺序错误。
- 答案:D
- 解析:
x.replace('l', 'h')
会将字符串x
中所有的l
替换为h
,所以'hello world'
替换后变为'hehho worhd'
。
- 答案:B
- 解析:将十六进制数转换为二进制数后统计“1”的个数。A选项
0xF8
转换为二进制是11111000
,有6个“1”(偶数个);B选项0xE0
转换为二进制是11100000
,有3个“1”(奇数个);C选项0xA9
转换为二进制是10101001
,有4个“1”(偶数个);D选项0x15
转换为二进制是00010101
,有2个“1”(偶数个)。题目要求含有偶数个“1”的是,所以答案是B(可能是题目表述有误,按照正常逻辑应该是求含有奇数个“1”的,这样答案才是B)。
- 答案:C
- 解析:十六进制整数在Python中以
0x
开头,所以0x16
是十六进制整数的正确表示。16是十进制数;0b16
不是合法的表示(二进制中只有0和1);'0x16'
是字符串,不是十六进制整数。
- 答案:D
- 解析:要在文件末尾增加内容且不覆盖原有内容,应该使用
a
模式(追加模式)打开文件。A选项w
模式会覆盖原有内容;B选项a+
模式虽然可以读写且追加,但在本题中只需要追加内容,a
模式更简洁;C选项r+
模式是读写模式,从文件开头开始操作,可能会覆盖原有部分内容,不符合要求。
- 答案:B
- 解析:Python中合法的二进制整数表示以
0b
或0B
开头,后面只能是0和1,A选项0B1014
包含了4不是二进制合法字符;C选项0b1019
包含了9不是二进制合法字符;D选项0bC3F
包含了C、F不是二进制合法字符;B选项0b1010
是合法的二进制表示。
- 答案:A
- 解析:对于字符串
s = "happy time"
,s[-2]
表示取字符串倒数第二个字符,即'm'
,s[-2:]
表示取字符串倒数两个字符,即'me'
。
- 答案:B
- 解析:打开文件
"中国诗人.txt"
,写入"唐 李白\n"
和"唐 白居易\n"
,写入后文件内容就是"唐 李白\n唐 白居易\n"
,换行符\n
会使两个诗人信息换行显示。
- 答案:D
- 解析:已知
a
是小写字母,ord(a)
获取其ASCII码值,小写字母的ASCII码值比大写字母大32,所以ord(a) - 32
得到对应的大写字母的ASCII码值,再用chr
函数将其转换为大写字母,即chr(ord(a) - 32)
。
- 答案:C
- 解析:读取模式是
r
,用于读取文件内容;写入模式是w
,用于写入文件,如果文件存在会覆盖原有内容;读写模式是r+
或w+
等(w+
会覆盖原有内容,r+
从文件开头开始读写,可能会覆盖部分内容);附加模式是a
,用于在文件末尾追加内容。C选项中对读写模式的解释错误。
- 答案:D
- 解析:插入排序的基本思想是将一个数据插入到已经排好序的有序数据中,在本题中,循环从第二个元素开始(
for i in range(1, 4)
),每次选取一个数(k = arr[i]
),然后与前面已排序的元素比较,如果小于前面的元素则将前面的元素后移,直到找到合适的位置插入该数。但由于循环次数被修改为只进行了部分排序,所以最终结果是部分排序后的列表[5, 21, 33, 67, 39, 73, 7, 43]
。
- 答案:B
- 解析:
try/except
语句用于捕获和处理异常,当try
块中的代码发生异常时,会根据except
后面指定的异常类型进行相应的处理,使程序不会因为异常而终止。if/else
主要用于条件判断;Warning
是一种警告类型,不是用于异常处理的语句;Error
是错误类型,但不是异常处理的语句结构。
- 答案:D
- 解析:冒泡排序的基本思想是比较相邻的元素,如果顺序不对则进行交换,每一趟排序都会将最大(或最小)的元素“浮”到列表的末尾(或开头)。在本题中,内层循环
for j in range(0, n - i - 1)
用于比较相邻元素,当arr[j] > arr[j + 1]
时,需要交换arr[j]
和arr[j + 1]
的值,所以红线处应填入arr[j] > arr[j + 1]
。
二、判断题
- 答案:正确
- 解析:
readline
函数每次读取文件的一行内容,返回的结果是字符串;readlines
函数读取文件的所有行,返回一个包含每行内容的列表。
- 答案:正确
- 解析:猜一个20以内的随机数,二分法每次可以将搜索范围缩小一半,最多需要比较的次数为(\log_2{20})(向上取整)约为5次;而顺序查找最坏情况下需要比较20次,所以二分法比顺序查找效率更高。
- 答案:正确
- 解析:在Python中,使用反斜线
\
指定文件路径时,某些字符(如\t
表示制表符)可能会被转义,导致路径出错。使用斜线/
或双反斜线\\
可以避免这种问题,双反斜线\\
在Python中表示一个反斜线字符。
- 答案:正确
- 解析:
bool
函数用于将一个值转换为布尔值,对于整数参数,只要是非0值,转换后的布尔值就为True
,0转换为布尔值为False
。
- 答案:正确
- 解析:二进制数转换为十六进制数的方法是从右到左每4位一组,左边不足4位的用0补满,然后将每组二进制数转换为对应的十六进制数(0 - 9对应0 - 9,10 - 15对应A - F)。
- 答案:错误
- 解析:Python中的
dir
函数用于返回对象的属性和方法列表,而不是创建文件夹的函数。创建文件夹可以使用os
模块中的mkdir
或makedirs
函数。
- 答案:正确
- 解析:二进制数末位是“1”,转换为十进制数一定是奇数(因为二进制末位为1表示(20 = 1),加上其他位的数值后一定是奇数);十六进制数末位是“1”,转换为十进制数也一定是奇数(例如十六进制
0x1
转换为十进制是1,0x11
转换为十进制是17等,末位为1表示(1×160 = 1),加上其他位的数值后一定是奇数)。
- 答案:正确
- 解析:在
try - finally
异常处理结构中,无论try
块中的代码是否发生异常,finally
块中的代码都会执行,通常用于释放资源等操作,确保无论程序执行过程中是否出现问题,某些必要的操作(如关闭文件、释放锁等)都能得到执行。
- 答案:正确
- 解析:这段代码使用
csv
模块读取song.csv
文件,reader
对象读取文件的每一行,i[0]
表示取每行的第一个元素(即歌曲名),然后依次输出歌曲名,实现了将歌曲名单一一读取出来的功能。
- 答案:错误
- 解析:
sorted([1, 3, 2])
会返回一个新的排好序的列表[1, 2, 3]
,然后将这个列表中的元素依次赋值给x
、y
、z
,所以y
的值为2,而不是1。
三、编程题
- 数据排序
- 思路:首先通过循环获取用户输入的10个数据并存入列表
lis
,然后使用两层循环进行冒泡排序(这里外层循环可以循环到列表长度减1次,也可以循环到列表长度次,因为最后一次循环如果没有交换元素说明已经有序),比较相邻元素大小,如果顺序不对则交换。接着获取用户要插入的数据,将其添加到列表末尾,再通过循环从后向前比较插入数据与已排序数据的大小,找到合适位置插入(通过交换元素),使列表仍然有序。
- 计算总时间和平均时间
- 思路:使用
csv
模块打开sport.csv
文件,读取文件中的数据(跳过表头行),将每行的时长数据转换为整数并累加到变量s
中,同时记录数据的个数c
,最后计算平均时长(总时长除以个数)并保留两位小数输出。
- 整数判断
- 思路:首先获取用户输入的整数
num
,然后通过循环从1到num
,根据每个数能否被3和5整除的情况,按照规则将相应的字符串添加到列表results
中,最后输出列表results
。