一、单选题
- 答案:D
- 解析:“r”模式是以只读方式打开文件,文件指针放在文件开头。“w+”是以读写模式打开文件,如果文件存在则清空内容,如果不存在则创建新文件;“r+”打开文件用于读写,文件指针在文件开头;“w”打开文件只用于写入,如果文件已存在则清空内容再写入。
- 答案:B
- 解析:
sorted(a)
会返回一个新的排好序的列表,但原列表a
不变;a.sort()
会直接对原列表a
进行排序,改变原列表顺序。
- 解析:
- 答案:A
- 解析:将各选项转换为十进制进行比较。A选项
0x2B
(十六进制)转换为十进制是43;B选项0o37
(八进制)转换为十进制是31;C选项41本身就是十进制;D选项0b100111
(二进制)转换为十进制是39。所以数值最大的是A。
- 解析:将各选项转换为十进制进行比较。A选项
- 答案:B
- 解析:
bool(2)
的值为True
,在Python中True
可以当作整数1,所以bool(2)+3
相当于1 + 3 = 4
。
- 解析:
- 答案:B
- 解析:因为要找出满足既是3的倍数且各个位上数的和是8的倍数的三位数,需要逐个列举三位数来判断是否满足条件,这种方法适合用枚举算法。解析算法适用于有明确数学公式或逻辑关系的问题;排序算法用于对数据进行排序;对分查找法适用于有序数列的查找,本题不适用。
- 答案:C
- 解析:Python异常处理常用关键字有
try
(尝试执行可能出错的代码块)、except
(捕获特定类型的异常)、else
(在try
代码块没有异常时执行)、finally
(无论是否有异常都会执行的代码块),而if
主要用于条件判断,不是异常处理的关键字。
- 解析:Python异常处理常用关键字有
- 答案:A
- 解析:列表的
append
方法用于在列表末尾添加元素,km.append("综合")
可以将“综合”学科添加到考试科目列表km
中。insert
方法需要指定插入位置;write
和read
方法不是用于列表操作的,而是用于文件操作。
- 解析:列表的
- 答案:B
- 解析:
ord("0")
返回字符“0”的ASCII码值,加上3后得到新的ASCII码值,再用chr
函数将其转换为对应的字符,即“3”。
- 解析:
- 答案:B
- 解析:将十进制数1770转换为八进制,可以使用Python的内置函数
oct
,得到结果为0o3351
。也可以通过不断除以8取余数的方法进行转换。
- 解析:将十进制数1770转换为八进制,可以使用Python的内置函数
- 答案:B
- 解析:
sorted
函数对列表进行排序,reverse=True
表示降序排列。原列表a = [[5, 1, 3, 4]]
,对其排序后得到[5, 4, 3, 1]
。
- 答案:D
- 解析:冒泡排序对于n个数进行排序,比较次数为
n*(n - 1)/2
。这里n = 6,代入计算得到6*(6 - 1)/2 = 15
次。
- 答案:C
- 解析:
eval
函数会计算字符串表达式的值,用户输入“3*6”,eval(cal)
会计算出结果18并输出。
- 答案:A
- 解析:
float("3.14")
会将字符串“3.14”转换为浮点数3.14,结果正确。type(100)
的结果是<class 'int'>
,表示整数类型;oct(100)
获得的是八进制数;hex(100)
获得的是十六进制数。
- 答案:A
- 解析:
abs()
函数的作用是求绝对值,例如abs(-5)
返回5。
- 答案:B
- 解析:
sum(t)
计算元组t
中所有元素的和,len(t)
计算元组的长度,平均值为sum(t)/len(t)
,计算结果为24.0(因为除法结果默认是浮点数)。
- 答案:C
- 解析:
readlines
方法读取文件所有行并返回一个包含每行内容的列表;readline
方法读取文件的第一行,再次调用会读取下一行;执行readline
方法后结果是字符串。在同一个程序中,多次使用readline
方法会依次读取文件的每一行,而不是一直读取第一行。
- 答案:A
- 解析:
sorted
函数对列表进行排序,reverse=True
表示降序排列。原列表list1 = [5, 0, 6, 1, 2, 7, 3, 4]
,排序后得到[7, 6, 5, 4, 3, 2, 1, 0]
。
- 答案:C
- 解析:
int
函数会将浮点数转换为整数,直接舍去小数部分,所以int(7.8)
的结果是7。
- 答案:A
- 解析:顺序查找不需要数据有序,属于无序查找;对分查找要求数据有序,但即使数据有序也不一定能找到数据(例如要查找的数据不在数据集中);对分查找在有序数据集中查找效率较高;顺序查找次数不一定比对分查找次数多,取决于数据情况和要查找的元素位置等。
- 答案:C
- 解析:当
try
子句中没有错误时,不会执行except
子句中的代码,而try
、else
、finally
子句可能会执行。finally
子句无论是否有异常都会执行,else
子句在try
没有异常时执行,try
子句本身包含正常执行的代码。
- 答案:A
- 解析:
format
函数用于实现字符串数据的格式化处理,例如"{} {}".format("hello", "world")
会将字符串格式化为“hello world”。int
用于整数转换,max
用于求最大值,str
用于将其他类型转换为字符串,但它们不是主要用于字符串格式化的函数。
- 答案:D
- 解析:外层循环遍历字符串“想念”,内层循环遍历字符串“家人”,每次将两个字符拼接后添加到列表
ls
中,最终ls
的结果是['想家', '想人', '念家', '念人']
。
- 答案:B
- 解析:
format
方法中花括号{}
的填充顺序是按照传入参数的顺序,所以应该先填name
,再填age
,即"我叫{},我今年{}岁了".format(name, age)
。
- 答案:C
- 解析:十六进制数的表示是以
0x
开头,数字范围是0 - 9和A - F(或a - f),A选项ABC
、B选项17F
、D选项9a01
都符合十六进制数的表示规则,而C选项8H5
不符合十六进制数的表示,因为多了一个H
。
- 答案:A
- 解析:十进制数57转换成十六进制可以用
hex(57)
,结果为0x39
;十六进制数39转换成十进制可以用int('39', 16)
,结果为57,而int('57', 16)
这种写法是错误的,它试图将字符串“57”当作十六进制数转换为十进制,但“57”不是合法的十六进制数表示(十六进制中没有数字7)。
二、判断题
- 答案:正确
- 解析:Python中可以有多个
except
语句来捕获不同类型的异常,程序会按照except
语句的顺序依次尝试匹配异常类型,如果匹配成功则执行相应的except
块中的代码。
- 解析:Python中可以有多个
- 答案:正确
- 解析:
any
函数用于判断可迭代对象中是否有至少一个元素为True
。空列表[]
和空元组()
中都没有元素,所以any([])
和any(())
的结果都是False
。
- 解析:
- 答案:错误
- 解析:利用
csv
格式存储二维数据时,每行确实是一个一维数据且用逗号分隔,但不允许有空行,否则在读取数据时会出现问题(例如数据行数不准确等)。
- 解析:利用
- 答案:正确
- 解析:小明的程序使用了
map
函数结合匿名函数lambda
来计算列表中每个元素的平方,然后使用print
函数输出结果,是一种简洁有效的实现方式,两行代码可以完成计算整数列表中元素平方的功能。
- 解析:小明的程序使用了
- 答案:正确
- 解析:
seek
函数可以用于移动文件指针的位置,当多次使用readline
读取文件后,如果想要回到文件的起始位置,可以使用seek(0)
来实现,其中0
表示将指针移动到文件开头的偏移量为0的位置。
- 解析:
- 答案:错误
- 解析:
print
函数输出完毕默认换行,但可以通过修改end
参数来改变输出后的间隔方式,例如print("hello", end=" ")
会在输出“hello”后不换行,而是输出一个空格,后续的输出会接着在这个位置继续。
- 解析:
- 答案:正确
- 解析:十六进制与八进制数值之间不能直接转换,常常先将十六进制转换为二进制或十进制,再将其转换为八进制;或者先将八进制转换为二进制或十进制,再转换为十六进制,所以常常借助二进制或者十进制作为中间桥梁。
- 答案:错误
- 解析:同一个整数可以用十六进制和八进制表示,虽然表示形式不同,但数值是相等的。例如十进制数16,十六进制表示为
0x10
,八进制表示为0o20
,它们所代表的数值都是16。
- 解析:同一个整数可以用十六进制和八进制表示,虽然表示形式不同,但数值是相等的。例如十进制数16,十六进制表示为
- 答案:错误
- 解析:语句
print("a", "b", "c", sep=",")
的输出结果是a,b,c
,sep
参数指定了输出时元素之间的分隔符为逗号,而不是输出"a" "b" "c"
。
- 解析:语句
- 答案:正确
- 解析:这段代码使用
csv
库来读取class.csv
文件,next(reader)
会读取文件的第一行(表头行)并将其赋值给head_row
,然后输出表头行的信息,是获取csv
文件表头信息的正确方式。
三、编程题
-
排队退出游戏
- 思路:使用一个列表
num
来模拟人的编号,通过循环报数,当报到3时将对应的人标记为退出(这里将其值设为0),直到只剩下一个人为止,最后输出剩下的人的编号。
- 思路:使用一个列表
-
按年龄排序
- 思路:首先获取输入的年龄字符串,将其分割成单个年龄并转换为整数存入列表
a
,同时记录每个年龄的原始顺序存入列表b
。然后使用冒泡排序算法对年龄列表a
进行排序,在排序过程中,同时交换b
中对应的顺序编号,以保证年龄顺序改变后,原始顺序编号也能正确对应。最后输出排序后的年龄列表a
和原始顺序编号列表b
。
- 思路:首先获取输入的年龄字符串,将其分割成单个年龄并转换为整数存入列表
-
计算法定节假日休息时间
- 思路:首先打开
vacations.csv
文件,读取其中的数据并处理成合适的格式(这里是一个包含每行数据列表的列表ls
),然后获取用户输入的节假日名称,在读取的数据中查找该节假日对应的行,最后输出该节假日的假期范围。
- 思路:首先打开