一、单选题
- 答案:C
- 解析:将二进制数转换为十六进制数,可以从右到左每4位一组,不足4位在左边补0,然后将每组二进制数转换为对应的十六进制数。二进制数
101100111
可分为0001 0110 0111
,对应的十六进制数为167
。
- 解析:将二进制数转换为十六进制数,可以从右到左每4位一组,不足4位在左边补0,然后将每组二进制数转换为对应的十六进制数。二进制数
- 答案:D
- 解析:Python中合法的八进制整数表示以
0o
或0O
开头,后面只能是0 - 7的数字。A选项0o129
中包含了9不是八进制合法数字;B选项0o12A
中包含了A不是八进制合法数字;C选项0O1708
中包含了8不是八进制合法数字;D选项0O1207
是合法的八进制表示。
- 解析:Python中合法的八进制整数表示以
- 答案:B
- 解析:
int('10', 16)
表示将十六进制字符串'10'
转换为十进制整数,转换结果为16。A选项描述的是将十进制数转换为十六进制数的操作;C选项将字符串'10'
转换为二进制整数的说法错误;D选项将字符串'10'
转换为十六进制整数的操作错误,这里是将其转换为十进制整数。
- 解析:
- 答案:C
- 解析:八进制7转换为十进制为(7×80 = 7),十六进制7转换为十进制为(7×160 = 7),它们相加的十进制结果为(7 + 7 = 14)。
- 答案:C
- 解析:在
f = open('c:/abc.csv', 'r')
中,f
是变量名用于表示打开的文件对象;'r'
表示以只读方式打开文件;如果文件abc.csv
不存在,使用'r'
模式打开会报错,而不是创建文件;'c:/abc.csv'
代表c盘中名为abc.csv
的文件。
- 解析:在
- 答案:C
- 解析:A选项
"r"
是正确的文件打开模式;B选项lines.strip("\n")
用于去除每行字符串两端的换行符,是正确的操作;C选项split("\"")
中"
是字符串的分隔符,这里使用错误,应该是split(",")
(假设文件中的数据是以逗号分隔的);D选项f.close()
用于关闭文件,是正确的操作。
- 解析:A选项
- 答案:B
- 解析:
len
函数用于返回序列(如列表)的长度,对于列表[2, 3, 4, 5, [7, 8], (9, 10)]
,其中包含6个元素(4个整数、1个列表、1个元组),所以a
的值为6。
- 解析:
- 答案:D
- 解析:
read
方法每次读取整个文件内容,返回一个字符串,A、B选项正确;readline
方法每次读取文件的一行,C选项正确;readlines
方法每次按行读取整个文件内容,将读取到的内容放到一个列表中,每个元素是文件中的一行字符串,而不是一个字符串,D选项错误。
- 解析:
- 答案:B
- 解析:A选项
f = open('city.csv', 'w')
确实表示当前是写入模式,正确;B选项f.write(','.join(add) + '\n')
是将列表add
中的元素用逗号连接后写入文件并换行,如果改成f.write(' '.join(add) + '\n')
,则是用空格连接元素,程序运行效果不同,错误;C选项删除f.close()
语句,文件可能无法正确保存(取决于文件对象的垃圾回收机制等,但通常情况下不关闭文件是不好的编程习惯且可能导致数据丢失或不完整保存),正确;D选项当前程序的功能是将列表对象输出到CSV文件(虽然这里没有严格按照CSV格式要求添加标题行等,但主要功能是将列表内容写入文件),正确。
- 解析:A选项
- 答案:A
- 解析:当发生异常时,通常需要捕获异常并进行相应的处理,将可能发生错误的语句放在
try
模块里,处理异常的语句放在except
模块里,一个try
模块可以对应多个except
模块用于捕获不同类型的异常,所以A选项正确,B、C、D选项描述不准确。
- 答案:D
- 解析:用户输入
"2"
,eval
函数会将字符串"2"
转换为整数2,然后赋值给a
,最后输出a
的值为2。
- 答案:D
- 解析:
a = "3"
,b = "3"
,c = int(a + b)
会将字符串"33"
转换为整数33,然后输出c
的值为33,而不是5或"5"
或5.0。
- 答案:C
- 解析:
sorted((1, 3, 2))
会返回一个新的排好序的元组(1, 2, 3)
,然后将这个元组中的元素依次赋值给a
、b
、c
,所以b
的值为2。
- 答案:C
- 解析:
min('5678')
返回字符串'5678'
中的最小字符'5'
。A选项print(max(float('5'), 7, 6))
,先将'5'
转换为浮点数5,然后求5、7、6中的最大值,语法正确;B选项print(max(ord('5'), 7, 6))
,ord('5')
返回字符'5'
的ASCII码值53,然后求53、7、6中的最大值,语法正确;C选项print(max(bin('5'), 7, 6))
,bin
函数用于将整数转换为二进制字符串,bin('5')
会报错,语法错误;D选项print(max(int('5'), 7, 6))
,先将'5'
转换为整数5,然后求5、7、6中的最大值,语法正确。
- 答案:D
- 解析:A选项
all(())
,空元组中没有元素,all
函数对于空可迭代对象返回True
;B选项any(['0'])
,列表中包含非空字符串'0'
,any
函数返回True
;C选项any((0,))
,元组中包含0,any
函数返回True
;D选项bool(range(0))
,range(0)
返回一个空的可迭代对象,bool
函数对于空可迭代对象返回False
。
- 答案:C
- 解析:A选项
bool([])
,空列表[]
的布尔值为False
;B选项bool(None)
,None
的布尔值为False
;C选项bool("False")
,非空字符串的布尔值为True
;D选项bool(2 * 3 - 6)
,计算结果为0,0的布尔值为False
。
- 答案:D
- 解析:
divmod
函数返回两个值,分别是除法的商和余数,divmod(22, 7)
的结果是(3, 1)
,表示22除以7商为3余数为1。
- 答案:A
- 解析:A选项
abs(-3.4)
的结果是3.4;B选项round(abs(-3.4))
先计算abs(-3.4)
为3.4,再round
取整为3;C选项abs(round(-3.4))
先round(-3.4)
取整为 - 3,再取绝对值为3;D选项min(round(3.4), round(3.8))
,round(3.4)
取整为3,round(3.8)
取整为4,min
函数返回较小值为3,A选项结果与其他三项不同。
- 答案:B
- 解析:
ascii
函数返回一个表示对象的可打印字符串,而不是返回对象的ASCII码的值,A、C、D选项描述正确,B选项错误。
- 答案:D
- 解析:A选项
bool(2 * 3 - 0)
计算结果为6,布尔值为True
;B选项bool(2 * 3 - 2)
计算结果为4,布尔值为True
;C选项bool(2 * 3 - 3)
计算结果为3,布尔值为True
;D选项bool(2 * 3 - 6)
计算结果为0,布尔值为False
。
- 答案:D
- 解析:A选项
print(1 + 2 + 3 = 6)
是错误的语法,不能这样直接在print
函数中写表达式和等号;B选项print(1 + 2 + 3, '=6')
会输出6 =6
,中间有空格;C选项print(1, 2, 3, sep='+', '=6')
是错误的语法,sep
和end
参数不能这样混合使用;D选项print(1, 2, 3, sep='+', end='=6')
会输出1+2+3=6
,符合要求。
- 答案:B
- 解析:
sorted
函数用于对可迭代对象进行排序,返回一个新的排好序的列表,但它本身不是创建新列表的函数;list
函数可以创建一个新的列表,例如list()
创建一个空列表,list([1, 2, 3])
将其他可迭代对象转换为列表;dict
函数用于创建字典;set
函数用于创建集合。
- 答案:D
- 解析:A选项采用顺序查找算法,如果数据不存在则不能找到数据;B选项算法可以没有输入但必须有输出(输入可以为0个,输出至少为1个);C选项对分查找算法要求数据必须有序;D选项顺序查找算法不需要对数据进行排序,直接逐个查找元素,正确。
- 答案:C
- 解析:冒泡排序的基本思想是比较相邻元素,如果顺序不对则交换,每一趟排序会将最大的元素“浮”到末尾。原始列表
a = [8, 7, 9, 6, 3, 8]
,第一趟排序后:[7, 8, 6, 3, 8, 9]
;第二趟排序后:[7, 6, 3, 8, 8, 9]
。
- 答案:B
- 解析:选择排序的基本思想是在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。原始列表
a = [8, 7, 9, 6, 3, 8]
,第一趟排序后:[3, 7, 9, 6, 8, 8]
;第二趟排序后:[3, 6, 9, 7, 8, 8]
。
二、判断题
- 答案:错误
- 解析:十六进制数
0x10010
转换为十进制数的计算方法是(1×164 + 0×163 + 0×162 + 1×161 + 0×16^0 = 65552),而不是18。
- 解析:十六进制数
- 答案:错误
- 解析:
int('12', 16)
将十六进制字符串'12'
转换为十进制整数,结果为18,然后hex(18)
的结果是'0x12'
,而不是'0x18'
。
- 解析:
- 答案:正确
- 解析:这段代码首先以只读方式打开
city.csv
文件,然后使用read
方法读取文件内容,strip
方法去除字符串两端的换行符,split
方法以;
为分隔符将字符串分割成列表(假设文件中的数据是以;
分隔的),最后关闭文件,实现了将文件中的数据读取到列表中的功能。
- 解析:这段代码首先以只读方式打开
- 答案:正确
- 解析:
open('city.csv', 'r')
的作用是以只读方式打开文件名为city.csv
的文件,这里r
表示只读模式,用于读取文件内容。
- 解析:
- 答案:正确
- 解析:在向CSV文件写入数据时,如果数据是一个列表,使用
','.join(name)
可以将列表中的元素用逗号连接成一个字符串,然后再加上换行符'\n'
,就可以将一行数据写入文件,f.write
用于将字符串写入文件对象f
中。
- 解析:在向CSV文件写入数据时,如果数据是一个列表,使用
- 答案:正确
- 解析:在
try - except - else - finally
异常处理结构中,无论try
程序段中的语句有没有错误,finally
程序段中的语句都会得到执行,通常用于释放资源等操作,确保程序在任何情况下都能执行一些必要的清理工作。
- 解析:在
- 答案:错误
- 解析:
ord('A')
返回大写字母A
的ASCII码值65,ord('A') + 12 = 77
,ascii(77)
会返回'77'
,是一个字符串,而不是打印一个整型数值结果。
- 解析:
- 答案:正确
- 解析:
sorted
函数会返回一个新的排好序的列表,原列表的内容不会改变,所以排序后原列表中数据的位置不会发生变化。如果要对原列表进行排序,可以使用列表的sort
方法。
- 解析:
- 答案:错误
- 解析:
divmod(26, 10)
的结果是(2, 6)
,表示26除以10商为2余数为6,而不是(3, - 4)
。
- 解析:
- 答案:正确
- 解析:
ord("b")
返回小写字母b
的ASCII码值,小写字母的ASCII码值比大写字母大32,所以ord("b") - 32
得到大写字母B
的ASCII码值,再用chr
函数将其转换为大写字母B
,即chr(ord("b") - 32)
可以将小写字母b
转换为大写字母B
。
三、编程题
-
寻找“水仙花数”
- 思路:通过循环遍历100到999的所有三位数,对于每个数,分别获取其个位、十位和百位数字(通过取余和整除运算),然后计算各位数字的立方和,如果等于该数本身,则是水仙花数,将其输出并统计个数。
-
查找“支撑数”
- 思路:首先获取用户输入的字符串,将其按空格分割成列表,然后将列表中的每个元素转换为整数并存入新列表
a
。接着通过循环遍历列表a
(除了第一个和最后一个元素),判断当前元素是否大于其左右相邻元素,如果是则将其添加到支撑数列表b
中,并记录其位置编号到列表c
中。最后循环输出支撑数及其位置编号。
- 思路:首先获取用户输入的字符串,将其按空格分割成列表,然后将列表中的每个元素转换为整数并存入新列表
-
读取成绩数据
- 思路:首先使用
open
函数以只读方式打开score.txt
文件,然后使用readlines
方法读取文件的所有行,得到一个包含每行成绩字符串的列表list
。接着通过循环遍历列表list
,使用strip
方法去除每行末尾的换行符,并将字符串转换为整数(因为成绩是整数类型)。最后对列表list
进行排序(使用sort
方法),然后输出排序后的成绩列表。
- 思路:首先使用