Python编程(1~6级)全部真题・点这里
一、单选题(共25题,每题2分,共50分)
第1题
要对二维列表所有的数据进行格式化输出,打印成表格形状,程序段如下:
ls = [['金京',89],[ '吴树海',80],[ '王津津',90]]
for row in range(len(ls)):for column in range(len(ls[row])):print(_______,end="\t")print()
划线处的代码应该为?
A:ls[row][column]
B:ls[column][ row]
C:row[row][ls]
D:row[ls][column]
答案:A
给定的程序使用嵌套的循环遍历二维列表 ls 中的每个元素。
外层循环 for row in range(len(ls)) 遍历列表 ls 的每一行,使用变量 row 来表示当前行的索引。
内层循环 for column in range(len(ls[row])) 遍历当前行的每个元素,使用变量 column 来表示当前列的索引。
在打印表格的过程中,我们需要获取二维列表中的每个元素来进行格式化输出。根据循环的索引变量,我们可以通过 ls[row][column] 来访问二维列表中的每个元素。
因此,划线处的代码应该为 A:ls[row][column]。
第2题
有如下列表l=[9,2,8,6,3,4],采用选择排序进行升序排序,请问第二趟排序之后的结果是?
A:[2,3,8,6,9,4]
B:[2,8,6,3,4,9]
C:[2,6,3,4,8,9]
D:[2,3,4,6,8,9]
答案:A
给定的列表是 l = [9, 2, 8, 6, 3, 4]。
选择排序的过程如下:
第一趟排序:找到最小元素 2,并将其与首个元素 9 交换位置。列表变为 [2, 9, 8, 6, 3, 4]。
第二趟排序:在剩余的未排序部分 [9, 8, 6, 3, 4] 中,找到最小元素 3,并将其与第二个元素 9 交换位置。列表变为 [2, 3, 8, 6, 9, 4]。
因此,第二趟排序后的结果是 [2, 3, 8, 6, 9, 4],选项 A 是正确的答案。
第3题
定义一个列表如下,输出的结果是?
shuzu=list(range(4))
print(shuzu)
A:[0,1,2,3]
B:[0,1,2,3,4]
C:[1,2,3,4]
D:[0,0,0,0]
答案:A
给定的代码定义了一个列表 shuzu,使用 list(range(4)) 来生成一个从 0 到 3 的范围对象,并将其转换为列表。
range(4) 表示一个范围对象,包含从 0 开始到 4 结束(不包括 4)的整数。
list(range(4)) 将范围对象转换为列表,生成的列表包含从 0 到 3 的整数。
因此,运行代码后,输出的结果是 [0, 1, 2, 3]。
第4题
有如下列表l=[9,2,8,6,3,4],采用冒泡排序进行升序排序,请问第二趟排序之后的结果是?
A:[2,3,8,6,9,4]
B:[2,8,6,3,4,9]
C:[2,6,3,4,8,9]
D:[2,3,4,6,8,9]
答案:C
给定的列表是 l = [9, 2, 8, 6, 3, 4]。
冒泡排序的过程如下:
第一趟排序:比较相邻的两个元素,如果顺序不正确,则交换它们的位置。在第一趟排序后,最大的元素会被交换到最后的位置。列表变为 [2, 8, 6, 3, 4, 9]。
第二趟排序:在剩余的未排序部分 [2, 8, 6, 3, 4] 中,比较相邻的两个元素,并根据需要交换它们的位置。经过比较和交换,列表变为 [2, 6, 3, 4, 8, 9]。
因此,第二趟排序后的结果是 [2, 6, 3, 4, 8, 9],选项 C 是正确的答案。
第5题
关于列表的索引,描述不正确的是?
A:列表中的索引代表各元素在该列表中的位置
B:第一个元素的索引是1
C:索引通常是用自然数来表示的
D:我们可以使用下标索引来访问列表中的值
答案:B
在Python中,列表的索引是从0开始的,而不是从1开始的。因此,第一个元素的索引是0,而不是1。
第6题
关于十六进制数,下列说法错误的是?
A:十六进制数从小数点向左数第一位代表有几个1。
B:十进制数的基数个数为16,所以里面包括0—9,A—F,这十六个数码。
C:相同的十进制数分别转换成十六进制数和二进制数后,二进制数的数位通常比十六进制数长。
D:十进制数转换成十六进制数后,它的位数一定会变短。
答案:D
在一般情况下,十进制数转换为十六进制数后,其位数可能会变长或保持相同,但不会一定变短。
例如,十进制数 255 转换为十六进制数是 FF,其位数从3位变为2位,变短了。然而,十进制数 16 转换为十六进制数是 10,其位数保持不变。
第7题
关于数据,下列说法不正确的是?
A:一维数据一定由有序数据构成
B:常见的表格属于二维数据
C:[[1,2][3,4]]可以表达二维数据
D:二维数据由关联的关系数据构成
答案:A
一维数据可以由有序数据构成,但并不一定要求一维数据是有序的。一维数据是指只有一个维度的数据,可以是有序的,也可以是无序的。例如,一个包含不同人的身高数据的列表可以被视为一维数据,即使这些身高数据没有特定的顺序。
第8题
关于二进制,八进制,十进制,十六进制的表示方法,下列说法不正确的是?
A:以0b开头表示的是二进制
B:以0o开头表示的是八进制
C:以0x开头表示的是十六进制
D:以0i开头表示的是十进制
答案:D
以0i开头并不是表示十进制的方式。在Python中,十进制数并不需要特定的前缀或标识符,直接使用数字表示即可。
第9题
int函数可以将字符串转换为数值,关于int函数的使用,正确的是?
A:int(“0b10000”,10)
B:int(“16”,10)
C:int(“0o020”,10)
D:int(“0x10”,10)
答案:B
int函数可以将字符串转换为数值,其中第一个参数是待转换的字符串,第二个参数是可选的进制数(默认为10,表示十进制)。
根据选项:
A:int(“0b10000”, 10) - 这将尝试将字符串 “0b10000” 转换为十进制数,但是 “0b10000” 是二进制表示法,应该将第二个参数设置为2,即 int(“0b10000”, 2)。
C:int(“0o020”, 10) - 这将尝试将字符串 “0o020” 转换为十进制数,但是 “0o020” 是八进制表示法,应该将第二个参数设置为8,即 int(“0o020”, 8)。
D:int(“0x10”, 10) - 这将尝试将字符串 “0x10” 转换为十进制数,但是 “0x10” 是十六进制表示法,应该将第二个参数设置为16,即 int(“0x10”, 16)。
第10题
有如下程序段,输出结果是?
for i in range(3):print(i,end=',')
A:0,1,2
B:0,1,2,
C:0,1,2,3
D:0,1,2,3,
答案:B
该程序使用了for循环来迭代range(3),它会生成一个从0到2的整数序列。在循环的每次迭代中,将当前的迭代变量i打印出来,并以逗号作为分隔符,并且end=','表示打印结束后不换行。
因此,程序会输出0,1,2,,选项 B 是正确的输出结果。
第11题
小明在学习编程时,学习到了一个二进制数101,这个二进制数对应的十进制数的数值是?
A:2
B:3
C:4
D:5
答案:D
二进制数101转换为十进制数的计算方法是将每个位上的数值乘以2的对应幂次,并将结果相加。
对于二进制数101,按照计算方法:
1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 4 + 0 + 1 = 5
第12题
已定义一个列表strSZ=[“语文”,“数学”,“英语”],现向列表末尾添加一个学科"科学",操作正确的是?
A:strSZ.read(“科学”)
B:strSZ.write(“科学”)
C:strSZ.append(“科学”)
D:strSZ.insert(“科学”)
答案:C
在Python中,要向列表末尾添加元素,可以使用append()方法。append()方法用于在列表末尾添加一个元素。
根据选项:
A:strSZ.read(“科学”) - read()不是列表的方法,无法使用该操作。
B:strSZ.write(“科学”) - write()不是列表的方法,无法使用该操作。
C:strSZ.append(“科学”) - 这是正确的操作,将学科"科学"添加到列表末尾。
D:strSZ.insert(“科学”) - insert()方法用于在指定位置插入元素,而不是在末尾添加元素。
因此,选项 C:strSZ.append(“科学”) 是正确的操作。
第13题
关于abs()函数,描述不正确的是?
A:abs()函数的功能是取整数的绝对值
B:abs(0)的运行结果是0
C:abs(-3)的运行结果是3
D:abs(3.45)的运行结果是3.45
答案:A
描述 A 是不正确的。abs()函数的功能是取数值的绝对值,而不仅限于整数。它可以用于整数、浮点数以及其他支持绝对值操作的数据类型。
第14题
关于open()函数的参数,下列描述不正确的是?
A:'r’以只读方式打开文件
B:'w’以写入的方式打开文件,如果文件不存在,则会提示错误
C:'a’打开文件,并将新内容写入到已有内容之后
D:'r+'以读、写方式打开文件
答案:B
描述 B 是不正确的。使用’w’参数以写入方式打开文件时,如果文件不存在,则会创建该文件。如果文件已经存在,打开文件时会清空文件内容。并不会提示错误,而是创建一个新的空文件。
第15题
执行代码x,y,z=sorted([1,3,2])之后,变量y的值为?
A:1
B:2
C:3
D:0
答案:B
代码sorted([1, 3, 2])会对列表[1, 3, 2]进行排序,并返回一个新的已排序列表。根据代码x, y, z = sorted([1, 3, 2]),新的已排序列表中的第一个元素会赋值给变量x,第二个元素赋值给变量y,第三个元素赋值给变量z。
因为原始列表[1, 3, 2]按升序排序后为[1, 2, 3],所以变量y的值为2。
第16题
以下表达式的值为True的是?
A:bool([])
B:bool(0.0)
C:bool(“False”)
D:bool(range(0))
答案:C
在Python中,bool()函数可以用来判断一个值的布尔值。在条件判断中,如果值为真,则返回True;如果值为假,则返回False。
根据选项:
A:bool([]) - 空列表[]被认为是假值,因此返回False。所以选项 A 是False。
B:bool(0.0) - 浮点数0.0被认为是假值,因此返回False。所以选项 B 是False。
C:bool(“False”) - 非空字符串被认为是真值,因此返回True。所以选项 C 是True。
D:bool(range(0)) - range(0)生成的是一个空的迭代对象,被认为是假值,因此返回False。所以选项 D 是False。
因此,选项 C:bool(“False”) 是值为True的表达式。
第17题
用于将整数和字符串转换成浮点数的函数是?
A:int
B:float
C:str
D:chr
答案:B
在Python中,可以使用float()函数将整数和字符串转换为浮点数。该函数接受一个参数,并尝试将其转换为浮点数类型。
第18题
关于Python异常处理的作用,描述不正确的是?
A:异常处理可以让程序不至于因为小错误而导致程序崩溃
B:异常处理能够补充程序的漏洞,让程序在任何情况下都不会终止
C:异常处理能够提高程序的容错性
D:异常处理能够让程序变得更加友好
答案:B
描述 B 是不正确的。异常处理的作用是在程序运行过程中遇到错误或异常情况时进行处理,以避免程序崩溃或异常终止,提高程序的容错性和健壮性。异常处理可以捕获和处理指定类型的异常,并提供相应的处理逻辑。但并不能补充程序的漏洞或完全防止程序终止,而是在出现异常时提供一种控制流程的机制。
第19题
print(divmod(223,11))的运行结果是?
A:20, 3
B:(20, 3)
C:3, 20
D:(3, 20)
答案:B
divmod()函数是Python内置函数,用于同时进行整数除法和取余运算。它接受两个参数,返回一个包含商和余数的元组。
在这个例子中,divmod(223, 11)会将223除以11,得到商为20,余数为3。然后print()函数用于将结果输出到控制台。
第20题
max()返回可迭代对象中的元素中的最大值或者所有参数的最大值,则max(“123”)返回的值是?
A:‘123’
B:123
C:3
D:‘3’
答案:D
max()函数用于返回可迭代对象中的元素中的最大值,或者返回所有参数中的最大值。
在这个例子中,参数是字符串"123"。在字符串中,字符按照其ASCII值进行比较。字符’1’的ASCII值是49,字符’2’的ASCII值是50,字符’3’的ASCII值是51。因此,字符’3’的ASCII值最大,所以max(“123”)的返回值是’3’。
第21题
能够只删除数组strSZ=[“语文”,“数学”,“英语”,“科学”]中的“科学”这个元素的操作,其中正确的是?
A:strSZ.remove[3]
B:strSZ.remove(“科学”)
C:del strSZ[4]
D:del strSZ
答案:B
要删除列表中的特定元素,可以使用remove()方法。该方法接受要删除的元素作为参数,并将第一个匹配到的元素从列表中删除。
根据选项:
A:strSZ.remove[3] - 这是错误的语法。应该使用圆括号而不是方括号来调用remove()方法,所以这个选项是不正确的。
B:strSZ.remove(“科学”) - 这是正确的操作。remove(“科学”)会将列表中第一个匹配到的元素"科学"删除。
C:del strSZ[4] - 这会删除列表中索引为4的元素,但是"科学"在列表中的索引是3,所以这个选项是不正确的。
D:del strSZ - 这会删除整个列表,而不仅仅是删除"科学"元素,所以这个选项是不正确的。
因此,选项 B:strSZ.remove(“科学”) 是正确的操作。
第22题
下列程序段在运行时输入"yes",则输出结果是?
try:x=eval(input())print(x)
except NameError:print("ok")
A:yes
B:ok
C:没有输出
D:程序出错
答案:B
在给定的程序段中,eval(input())语句用于获取输入并将其作为代码进行评估。在输入"yes"时,eval(“yes”)会引发NameError异常,因为"yes"在此上下文中没有定义为变量或表达式。
由于NameError异常被捕获并处理,except NameError块中的代码将执行。因此,程序将打印输出"ok"。
第23题
range()函数根据传入的参数创建一个新的range对象,下列与range(5)相同的结果是?
A:range(1,5)
B:range(1,6)
C:range(0,5)
D:range(0,6)
答案:C
range()函数根据传入的参数创建一个新的range对象,用于表示一个范围内的整数序列。
在这个例子中,range(5)表示一个从0到4的整数序列,不包括5。所以,与range(5)相同的结果是range(0, 5)。
第24题
判断可迭代对象的每个元素是否都为True值的函数是?
A:all()
B:any()
C:map()
D:sorted()
答案:A
all()函数用于判断可迭代对象中的每个元素是否都为True值。它接受一个可迭代对象作为参数,并返回一个布尔值。如果可迭代对象中的所有元素都为True,all()函数返回True;否则,返回False。
第25题
下列运算函数,结果分别返回商和余的值的是?
A:abs()
B:divmod(a,b)
C:max()
D:pow(a,b)
答案:B
divmod(a, b)函数是Python内置函数,用于同时进行整数除法和取余运算。它接受两个参数 a 和 b,并返回一个包含商和余数的元组 (quotient, remainder)。
二、判断题(共10题,每题2分,共20分)
第26题
将十六进制数0x7e4转换成十进制数,可以使用int(‘0x7e4’,16)语句,而不能使用int(‘7e4’,16)语句。
答案:错误
十六进制数可以使用int()函数进行转换,其中参数 ‘0x7e4’ 和 ‘7e4’ 都可以被正确转换为十进制数。
使用 int(‘0x7e4’, 16) 语句,其中 ‘0x7e4’ 表示一个以 ‘0x’ 开头的十六进制数,16 是指定进制为十六进制。这样的语句将 ‘0x7e4’ 转换为十进制数 2020。
使用 int(‘7e4’, 16) 语句,其中 ‘7e4’ 表示一个不带前缀的字符串,16 是指定进制为十六进制。这样的语句将 ‘7e4’ 解释为十六进制数时发生错误,因为字符串中缺少 ‘0x’ 前缀。
因此,选项中的判断题是错误的,可以使用 int(‘0x7e4’, 16) 语句将十六进制数 ‘0x7e4’ 转换为十进制数。
第27题
十六进制数转换为二进制数较简单,只需要将每一位十六进制数转换为四位二进制数,即可。
答案:正确
将十六进制数转换为二进制数可以通过将每一位十六进制数转换为四位二进制数来实现。每个十六进制数位对应的二进制数位是固定的,可以通过简单的转换规则进行转换。
十六进制数中的每个数字(0-9)可以直接转换为对应的四位二进制数。例如,十六进制数 0x3 可以转换为二进制数 0011,十六进制数 0xA 可以转换为二进制数 1010。
对于十六进制数中的字母(A-F),它们分别对应的二进制数如下:
A: 1010
B: 1011
C: 1100
D: 1101
E: 1110
F: 1111
因此,可以将每一位十六进制数转换为四位二进制数,从而得到相应的二进制表示。
第28题
在Python中,向csv文件中写入数据时,用空格分割列表name中的元素,可以使用file.write(’ ‘.join(name)+’\n’)语句(file为文件变量名)。
答案:正确
给定的语句file.write(’ ‘.join(name)+’\n’)可以在Python中使用空格分割列表name的元素,并将其写入CSV文件。
这种写入方式将列表中的元素用空格连接起来,然后在末尾添加换行符\n,以便将每个元素写入文件的一行中。
第29题
student.csv文件中存储有班级学生名单,使用以下Python程序可以把学生名单一一读取出来。
f=open('student.csv','r')
s=f.read().strip('\n').split(';')
f.close()
答案:错误
给定的Python程序尝试以文本模式打开名为student.csv的文件,并使用read()方法读取文件的内容。然后,它使用strip(‘\n’)方法去除读取的内容中的换行符,并使用split(‘;’)方法将内容按分号进行分割。
然而,在给定的程序中,分割符使用的是分号 ( ; ),而不是逗号 ('),这可能导致无法正确地将学生名单从CSV文件中分割出来。CSV文件通常使用逗号作为字段之间的分隔符。
第30题
在Python中,filter()函数的参数有两个,第一个必须是函数,第二个必须是序列。
答案:错误
在Python中,filter()函数的参数确实有两个,但第一个参数并不一定必须是函数,可以是任何可调用对象(callable)。可调用对象包括函数、类的实例方法以及实现了__call__方法的类。
filter()函数用于过滤序列中的元素,它接受一个可调用对象作为第一个参数,用于对序列中的每个元素进行判断,返回值为True的元素被保留,返回值为False的元素被过滤掉。
第二个参数是序列,可以是列表、元组、集合等可迭代对象。
第31题
input()函数返回的值是字符串,如果要输入数值并参与运算,那么必须用int()函数将其转换为数值后,再参与运算。
答案:错误
在Python中,input()函数返回的确实是字符串类型的值。然而,在某些情况下,可以直接对返回的字符串进行运算,而无需使用int()或float()函数进行类型转换。
Python中的动态类型特性允许在某些运算符和操作中隐式地进行类型转换。例如,对两个字符串使用+运算符时,会将它们连接起来而不需要显式地进行类型转换。同样,在某些情况下,可以直接对input()函数返回的字符串执行数值运算。
第32题
try-except-else-finally异常处理结构中,不论try程序段中的语句有没有错误,else程序段中的语句都会得到执行。
答案:错误
在Python的异常处理结构中,try-except-else-finally的执行逻辑如下:
首先执行try块中的代码。
如果try块中的代码没有引发异常,那么执行else块中的代码。
如果try块中的代码引发了异常,那么跳过else块,直接执行与所引发异常类型匹配的except块中的代码。
不论是否发生异常,最后都会执行finally块中的代码。
因此,只有在try块中的代码没有引发异常时,else块中的代码才会得到执行。如果发生了异常,程序会跳转到相应的except块,else块中的代码将被跳过。
第33题
CSV文件的每一行都是一维数据,因此它的每一行都可以用列表类型来表示。
答案:正确
CSV(Comma-Separated Values)文件是一种常见的用于存储和交换数据的文件格式。在CSV文件中,每一行通常代表一个数据记录,每个字段之间使用逗号或其他分隔符进行分隔。
由于CSV文件的每一行都代表一个数据记录,因此可以使用列表类型来表示它。在Python中,列表是一种有序的、可变的数据类型,可以包含任意类型的元素,包括字符串、数字、布尔值等。
第34题
在Python中,运行下面代码会输出:[(0, ‘王萍’), (1, ‘李丽’), (2, ‘宋明’)]。
name=['王萍','李丽','宋明']
print(list(enumerate(name)))
答案:正确
代码中的name列表包含了三个字符串元素:‘王萍’、‘李丽’和’宋明’。而enumerate()函数可以用来枚举一个可迭代对象,并返回索引和对应的元素值。在这个例子中,我们将name列表作为可迭代对象传递给enumerate()函数,并使用list()将其转换为列表。
enumerate(name)返回的枚举对象会生成一个包含索引和元素值的元组。因此,list(enumerate(name))会生成一个包含三个元组的列表,每个元组表示了原始列表的索引和对应的元素。
第35题
语句print(“www”,“python”,“org”,sep=“,”)的输出结果是:www.python.org。
答案:错误
在这个语句中,print()函数被用于输出字符串。逗号分隔的多个参数会被打印在一行上,每个参数之间用空格分隔。如果想要自定义参数之间的分隔符,可以使用sep参数来指定分隔符。在给定的语句中,sep=","将逗号替换为中文逗号,作为参数之间的分隔符。
因此,给定语句的输出结果是:www,python,org,而不是www.python.org。
三、编程题(共3题,共30分)
第36题
输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
输入:
4 5 2 3 1 7 9 10
输出:
[1, 2, 3, 4, 5, 7, 9, 10]
[5, 3, 4, 1, 2, 6, 7, 8]
请编写程序实现上述功能,或补全代码。
s=input()
x=s.split( ① )
a=[]
b=[]
n= ②
for i in range(0,len(x)):a.append(int( ③ ))n=n+1b.append(n)
for i in range( ④ ):for j in range(i+1,n):if ( ⑤ ):a[i],a[j]=a[j],a[i]b[i],b[j]=b[j],b[i]
print(a)
print(b)
参考答案:
s = input()
x = s.split(' ')
a = []
b = []
n = 0
for i in range(0, len(x)):a.append(int(x[i]))n = n + 1b.append(n)
for i in range(n-1):for j in range(i+1, n):if (a[i] > a[j]):a[i], a[j] = a[j], a[i]b[i], b[j] = b[j], b[i]
print(a)
print(b)
解释:
在第一行中,使用input()函数获取用户输入的一行字符串,并将其赋值给变量s。
在第二行中,使用字符串的split()方法将字符串按空格分割成多个部分,并将结果存储在列表x中。
在第四行中,使用append()方法将x列表中的每个元素转换为整数,并添加到列表a中。
在第五行中,使用range()函数生成一个从0到n的数字范围,在循环中迭代处理列表a的元素。
在第六行和第七行中,使用嵌套的循环和条件语句,比较列表中相邻元素的大小,如果前一个元素大于后一个元素,则交换它们的位置。
最后,打印排序后的列表a和原始位置列表b。
第37题
一格小朋友正在求解一道小学四年级提优题,题目如下:
把 1296 分拆成a、b、c、d四个正整数,如果a加上2,b减去2,c乘以2,d除以2,则这四个结果相等。现在请你编写程序求出这四个数。
补全下面的代码:
for a in range(1, ① ):b = ② for c in range(1,1296-a-b):d = ③ if (b-2==c*2) and (a+b+c+d== ④ ) :print(a,b,c,d)
参考答案:
for a in range(1,1296):b = a + 4for c in range(1,1296-a-b):d = c * 4if (b-2==c*2) and (a+b+c+d==1296):print(a,b,c,d)
第38题
请读取文件 “plant.csv” 的数据,数据内容如下图显示:
下列代码实现了读取“植物编号”和“生长情况”信息,输出“生长情况”达到6的数量,请你补全代码。
import csv
with open(“plant.csv”) as f:rows = list( ① (f))s = 0for row in rows[1:]:if ② >= 6:s = s + 1
print(s)
参考答案:
import csv
with open(“plant.csv”) as f:rows = list(csv.reader(f))s = 0for row in rows[1:]:if int(row[1]) >= 6:s = s + 1
print(s)