一、单选题
- 答案:C
- 解析:
c
是一个包含多个子列表的列表,c[1]
表示第二个子列表[['钱二', 20, '男', '西安']]
,c[1][3]
表示该子列表中的第四个元素,即'西安'
。
- 解析:
- 答案:C
- 解析:要读取文件的全部内容,应该使用
'r'
(只读)模式打开文件。'w'
模式用于写入文件,如果文件存在会覆盖原有内容;'a'
模式用于追加写入文件;'a+'
模式用于读写文件,且文件指针在文件末尾,追加写入内容。
- 解析:要读取文件的全部内容,应该使用
- 答案:D
- 解析:代码首先以
utf - 8
编码打开书目.csv
文件,然后逐行读取文件内容,对于每一行,将其按逗号分割成列表a
。当a[0]
(即书名)为"水浒传"
时,输出a[1]
,即该书的价格,从文件中可以看到水浒传
的价格为70
。
- 解析:代码首先以
- 答案:B
- 解析:
a = [['a', 'b', 'c']]
,b = [1, 2, 3]
,c = [b, a]
,c[1][0]
表示c
中的第二个元素(即a
)中的第一个元素,也就是'a'
。
- 解析:
- 答案:A
- 解析:要使每个字段之间相隔一个TAB键的距离,在格式化输出时应该使用
'\t'
作为分隔符。'\n'
是换行符;'\a'
是响铃符;'\r'
是回车符,均不符合要求。
- 解析:要使每个字段之间相隔一个TAB键的距离,在格式化输出时应该使用
- 答案:B
- 解析:在Python异常处理结构中,如果程序执行没有遇到异常,
try
块中的代码正常执行,然后会跳过except
块(因为没有异常可捕获),执行else
块(如果有else
块),最后执行finally
块。所以不会执行except
关键字后面的语句体。
- 解析:在Python异常处理结构中,如果程序执行没有遇到异常,
- 答案:D
- 解析:用户输入
16
和8
,a = int(input())
将输入转换为整数16,b = int(input())
将输入转换为整数8,r = a // b
计算16除以8的整数商为2,输出商是: 2
。因为程序没有异常,所以执行else
块输出正确
,最后执行finally
块输出结束
,最终结果为商是: 2.0 正确 结束
(注意这里商虽然是整数2,但在Python 3中,整数除法结果默认是浮点数,所以显示为2.0)。
- 解析:用户输入
- 答案:C
- 解析:
bin
函数用于将十进制数转换为二进制字符串;int
函数用于将其他类型转换为整数(这里不是将十进制转换为八进制的正确函数);oct
函数用于将十进制数转换为八进制字符串,所以将十进制20转化成八进制可以使用oct(20)
;hex
函数用于将十进制数转换为十六进制字符串。
- 解析:
- 答案:A
- 解析:十六进制
0x14
转换为十进制的计算方法是(1×161 + 4×160 = 20),A选项正确,C选项错误。十进制20转化成八进制为0o24
,B、D选项错误(八进制转换方法是用十进制数除以8取余数,从下往上排列,20除以8商2余4,所以八进制为0o24
)。
- 解析:十六进制
- 答案:D
- 解析:十六进制转化为十进制,是用每个数位上的数字乘以16的相应位数次幂(幂次从0开始,从右向左计数),然后将结果相加,而不是除16求余数的方法,A、C选项错误;二进制转化为十进制,是用每个数位上的数字乘以2的相应位数次幂(幂次从0开始,从右向左计数),然后将结果相加,也不是除2求余数的方法,B选项错误;n位二进制能表示的最大十进制数是(2^n - 1),D选项正确。
- 答案:D
- 解析:
bin
函数用于将十进制数转换为二进制字符串;int
函数用于将其他类型转换为整数(不是将十进制转换为十六进制的函数);oct
函数用于将十进制数转换为八进制字符串;hex
函数用于将十进制数转换为十六进制字符串,所以将十进制2022转化成十六进制可以使用hex(2022)
。
- 答案:A
- 解析:
abs
函数用于求绝对值,abs(-4.8)
的结果是4.8。
- 答案:B
- 解析:
ord
函数的参数是字符串类型(单个字符),它返回该字符的ASCII码值(整数);chr
函数的参数是整数,它返回对应的字符。所以B选项正确,A、C、D选项错误。
- 答案:D
- 解析:
a = [34, 7, 8, 23]
,max(a)
返回列表a
中的最大值34,abs(-5)
返回5,两者相加结果为39。
- 答案:C
- 解析:
set('小明你好')
会将字符串中的字符去重后组成一个集合,集合中的元素是无序的,结果为{'好', '你', '明', '小'}
(文字顺序不固定)。
- 答案:A
- 解析:代码中
for i in a
遍历列表a
中的每个元素,print(i, " ", bin(i))
会输出每个元素及其对应的二进制数,所以功能是分别输出5, 10, 32, 7的二进制数。
- 答案:C
- 解析:A选项
len([1, 2, 3, 4, 5, 789])
返回列表的长度为6;B选项max([78, 6, 5, 67])
返回列表中的最大值78;C选项abs(-90)
返回90;D选项round(38.4)
返回38。所以值最大的是C选项。
- 答案:C
- 解析:
divmod
函数返回两个值,分别是除法的商和余数,divmod(6, 2)
的结果是(3, 0)
,表示6除以2商为3余数为0。
- 答案:A
- 解析:
type
函数用于查看对象的数据类型,返回对象的类型信息;dir
函数用于返回对象的属性和方法列表;set
函数用于创建集合;help
函数用于查看函数或模块的帮助文档,但不是直接查看数据类型的函数。
- 答案:B
- 解析:
x = 7
,eval("x + 4")
会计算字符串中的表达式,将x
的值代入计算,结果为11,然后输出11。
- 答案:B
- 解析:
enumerate
函数是Python内置函数,可将一个可遍历对象组合为索引序列,通常用在for
循环中,返回一个内部由一个个元组组成的列表,每个元组包含索引和对应元素,但它不能用于判断数据类型是否是数值类型,B选项错误。
- 答案:C
- 解析:
enumerate('7890')
会将字符串组合为索引序列,循环中i
依次为0, 1, 2, 3,j
依次为'7'
,'8'
,'9'
,'0'
,输出结果为0 7 1 8 2 9 3 0
。
- 答案:A
- 解析:算法描述的三种基本结构是顺序结构、选择结构、循环结构。B选项
if
选择结构、for
循环、while
循环是具体的语句实现;C选项处理框、判断框、流程线是流程图中的元素;D选项自然语言、流程图、程序设计语言是算法描述的方式,而不是基本结构。
- 答案:D
- 解析:使用计算机解决问题的一般步骤是:首先分析问题,确定解题任务;然后设计求解算法;接着编写程序,用计算机进行处理;最后验证算法的功能和性能。所以正确顺序是④②①③。
- 答案:B
- 解析:解析算法是用数学公式或表达式来描述问题的解法,通过计算来得到结果。小明模拟绘制物体自由落体运动的抛物线轨迹,是根据自由落体运动的数学公式来计算轨迹上的点,属于解析算法。枚举算法是通过列举所有可能情况来求解问题;排序算法用于对数据进行排序;对分查找算法用于在有序数据中查找特定元素,均不符合本题情况。
二、判断题
- 答案:错误
- 解析:代码一直接打印读取到的每一行数据(去除换行符并按逗号分割后的列表),代码二则是将所有行的数据收集到一个列表
a
中,最后打印整个列表a
,两者结果不同。代码一输出的是逐个处理后的行数据,代码二输出的是包含所有行数据的列表。
- 解析:代码一直接打印读取到的每一行数据(去除换行符并按逗号分割后的列表),代码二则是将所有行的数据收集到一个列表
- 答案:错误
- 解析:
'a'
模式是追加模式,当使用seek(0, 0)
将文件指针移动到文件开头后,写入的数据会覆盖文件开头的原有内容,而不是插入数据。要在文件开头插入数据,应该使用'r+'
模式(读写模式),先读取文件内容,然后将指针移动到文件开头,写入新数据,再写入原文件内容(或者使用其他更合适的方法来实现插入操作)。
- 解析:
- 答案:错误
- 解析:当
try
里面的程序出现数据类型输入错误时,应该执行except
后面指定类型为ValueError
(或更具体的类型,如果适用)的语句块;当出现除数为零的错误时,应该执行except
后面指定类型为ZeroDivisionError
的语句块,而不是像题目中那样错误的对应。
- 解析:当
- 答案:正确
- 解析:八进制数
0o10
转换为十进制为(1×81 + 0×80 = 8),十进制数8转换为十六进制为0x8
,所以八进制数0o10
转化成十六进制数为0x8
。
- 解析:八进制数
- 答案:正确
- 解析:
0x20
是十六进制数,在Python中它是整数类型的一种表示,type(0x20)
会返回<class 'int'>
,表示其数据类型为整数。
- 解析:
- 答案:正确
- 解析:
divmod
函数执行结果是返回一个包含商和余数的元组,例如divmod(10, 3)
返回(3, 1)
,其中3是商,1是余数。
- 解析:
- 答案:错误
- 解析:
all
函数用于判断给定的可迭代参数中的所有元素是否都为True
(或可转换为True
的值),若是返回True
,否则返回False
。如果可迭代对象为空,all
函数也返回True
。
- 解析:
- 答案:错误
- 解析:
any
函数用于判断给定的可迭代参数中是否至少有一个元素为True
(或可转换为True
的值),若是返回True
,否则返回False
。如果可迭代对象为空,any
函数返回False
。
- 解析:
- 答案:正确
- 解析:
help
函数可以用于查看函数或模块的说明文档,例如help(print)
可以查看print
函数的详细说明,包括函数的功能、参数、返回值等信息。
- 解析:
- 答案:正确
- 解析:
list1[1:: - 4]
和list1[1::4]
在这个列表中结果是相同的,因为list1[1:: - 4]
从第二个元素开始,以步长 - 4(倒序,每次向前移动4个位置)取值,得到['钱', '周', '郑']
;list1[1::4]
从第二个元素开始,以步长4(正序,每次向后移动4个位置)取值,也得到['钱', '周', '郑']
。但需要注意的是,如果列表长度或元素位置不同,这两种切片方式的结果可能不同。
三、编程题
-
补充代码(冒泡排序)
- 思路:冒泡排序的基本思想是比较相邻的元素,如果顺序不对则进行交换,每一趟排序会将最大(或最小)的元素“浮”到末尾(或开头)。这里是升序排序,所以当
a[j] > a[j + 1]
时交换元素。外层循环控制排序的趟数,内层循环控制每趟比较的次数。
- 思路:冒泡排序的基本思想是比较相邻的元素,如果顺序不对则进行交换,每一趟排序会将最大(或最小)的元素“浮”到末尾(或开头)。这里是升序排序,所以当
-
统计单词个数
- 思路:首先统计列表
a
中单词的总个数n
(减1是因为索引从0开始)。然后通过循环,选择一个基准元素(这里是a[0]
),将列表中比基准小的元素移到基准前面,比基准大的元素移到基准后面,这个过程称为一趟快速排序(这里只是利用了快速排序的思想来对单词进行分组,而不是完整的排序)。接着通过循环统计与基准元素相同的单词个数ans
。最后根据统计结果输出每个单词及其出现的次数。
- 思路:首先统计列表
-
体质测试
- 思路:首先使用
csv
模块打开jcsv
文件,读取文件中的数据(使用csv.reader
读取并转换为列表rows
)。然后循环遍历rows
(从第二行开始,跳过标题行),判断每个学生的体质测试成绩是否大于等于85分,如果是,则输出该学生的姓名并计数。最后输出体质测试考核为A的学生数量。
- 思路:首先使用