一、单选题
1、现有一组初始记录无序的数据“5,8,6,3,9,2”,使用冒泡排序算法,按从小到大的顺序排列,第一轮排序的结果为?( )
A、5,6,3,8,9,2
B、5,6,3,8,2,9
C、5,6,8,3,2,9
D、5,8,3,6,9,2
解析:
冒泡排序的基本思想是通过相邻元素之间的比较和交换,使得每一轮排序后,最大的元素能够像“泡泡”一样“浮”到序列的末端。对于给定的初始数据"5,8,6,3,9,2",按照冒泡排序算法的第一轮排序,会先比较第1个和第2个数(5和8),由于5小于8,所以不需要交换位置。接着比较第2个和第3个数(8和6),由于8大于6,所以交换这两个数的位置,得到的结果为"5,6,8,3,9,2"。因此,第一轮排序的结果为选项B。
2、列表l=[9,2,8,6,3,4],采用选择排序进行升序排序,第二轮排序后的结果是?( )
A、2,3,4,6,8,9
B、2,3,4,6,9,8
C、2,3,8,6,4,9
D、2,3,8,6,9,4
解析:
选择排序是一种简单直观的排序算法,其工作原理是每次从未排序的元素中选择最小(或最大)的元素,将其放到已排序序列的末尾。对于列表l=[9,2,8,6,3,4],在第二轮排序前,已排序的序列为[2],未排序的序列为[9,8,6,3,4]。在第二轮排序中,从未排序的序列中选择最小的元素3,将其放到已排序序列的末尾,得到新的已排序序列[2,3]。然后,继续从未排序的序列中选择最小的元素4,将其放到已排序序列的末尾,得到最终的已排序序列[2,3,4]。因此,第二轮排序后的结果是2,3,4开头的序列,对应答案为D。
3、经典的韩信点兵问题出自《孙子算经》,译文为:有一些不清楚数量的物品,如果三个为一组的数剩下两个,如果五个为一组的数剩下三个,如果七个为一组的数剩下两个,问这些物品共有多少个。解决此问题可以用哪种算法?( )
A、解析算法
B、枚举算法
C、排序算法
D、查找算法
解析:
这个问题是一个典型的同余问题,可以通过枚举特定的数,检查这些数是否满足题目中的条件来求解。因此,可以使用枚举算法来解决这个问题。解析算法更多地用于解析数学表达式或几何图形等问题,排序算法用于将一组数据进行排序,查找算法用于在数据结构中查找特定元素,这些算法在此问题中并不适用。
4、运行下列程序段: try: a=6 b = int(input('输入一个数')) m=a/b print('商是:',m) except: print('输入错误!') else: print('正确!') finally: print('程序结束!') 下面说法正确的是?( )
A、当输入0时程序出错无法运行
B、当输入1时,输出结果为:商是:6
C、当输入6时,输出结果为:商是:1.0 正确!
D、不管输入什么内容都会输出:程序结束!
解析:
对于给出的程序段,无论输入什么内容,都会执行到finally语句块,因此都会输出“程序结束!”;对于选项A,当输入0时,程序会抛出ZeroDivisionError异常,但还是会执行到finally语句块,所以A错误;对于选项B,当输入1时,输出结果为“商是:6.0”,而不是“商是:6”,因为Python的除法运算结果默认为浮点数,所以B错误;对于选项C,当输入6时,输出结果为“商是:1.0 正确!”,与描述相符,但并不能说明程序的正确性,因此C并不是正确的说法。所以只有选项D是正确的。
5、Python的异常处理try....except...else...finally机制中,以下表述哪项是错误的?( )
A、当碰到错误语句时,try代码块的剩余代码将会被忽略,执行except语句块
B、当try语句块正确时,try代码块执行完毕,不执行else语句块,执行finally语句
C、不管try代码块正确与否,finally代码都要执行
D、except程序段中语句可能会被执行,也可能不会被执行
解析:
在Python的异常处理机制中,try…except…else…finally的结构中,当try代码块正确执行完毕(即没有引发任何异常)时,会执行完try代码块后直接执行finally语句块,而不会执行else语句块。因此,选项B描述是错误的。选项A、C、D都是正确的描述。
6、十进制数25,转化为二进制数为?( )
A、10011
B、11001
C、11000
D、11011
解析:
十进制数转化为二进制数,可以使用除2取余法。将25除以2,得到的商是12,余数是1,将商继续除以2,得到的商是6,余数是0,依次类推,直到商为0为止。所以,25的二进制表示为11001。因此,正确答案为B。
7、八进制数30,转化为十进制数为?( )
A、24
B、30
C、64
D、192
解析:
八进制数30转化为十进制数的计算过程为:3×8^1 + 0×8^0 = 24 + 0 = 24。因此,八进制数30转化为十进制数为24,故选A。
8、十进制数90,转化为十六进制数为?( )
A、50
B、1A
C、A5
D、5A
解析:
十进制数转化为十六进制数时,需要将该数除以16得到余数,然后将余数作为十六进制数的个位数,再将商继续除以16得到新的余数,以此类推,直到商为0为止。对于十进制数90,按照此方法转化得到十六进制数为5A。因此,选项D是正确的。
9、下面转化结果与十六进制数3C不相等的是?( )
A、十进制数60
B、八进制数74
C、二进制数111110
D、hex(60)
解析:
十六进制数3C转化为十进制数为56,二进制数为11100。与十六进制数3C不相等的选项是二进制数表示的形式为错误的答案,即选项C。其他选项A、B和D都正确地表示了与十六进制数相等的数值形式。
10、用python存储某餐馆菜单信息如下: menu=['花雕醉湖蟹','三鲜汤','西湖醋鱼','酸辣土豆丝'] price=[78,36,118,28] for i in range(len(menu)): print(menu[i]+':'+str(price[i])) 关于该段程序,下列说法正确的是?( )
A、menu和price组成了一个二维数组
B、该段程序一共输出4行结果
C、若menu和price的元素数量不相同,程序也不受影响
D、程序中len(menu)改成len(price),其他不变,结果将不一样
解析:
对于给出的程序,我们逐项分析各个选项:
A选项:提到menu和price组成了一个二维数组。但实际上,它们分别是两个一维列表,并没有组成二维数组。因此,A选项是错误的。
B选项:关于该段程序一共输出4行结果。由于menu列表中有4个元素,因此使用for循环遍历menu时,会输出4行结果,每行显示一个菜品名和其对应的价格。所以,B选项是正确的。
C选项:若menu和price的元素数量不相同,程序也不受影响。这个选项是错误的,因为如果menu和price的元素数量不相同,会导致在访问某个索引时,另一个列表没有对应的元素,从而引发错误。
D选项:程序中len(menu)改成len(price),其他不变,结果将不一样。由于menu和price的长度可能不同(尽管在这个特定例子中是相同的),使用len(price)可能会导致索引越界错误。因此,D选项是正确的。但由于题目要求选择正确的说法,所以我们选择B。
11、有如下程序: color=['红','橙','黄','绿','青','蓝','紫'] f=open('color.csv','w') f.write(';'.join(color)+'\n') f.close() 下列说法正确的是?( )
A、这段程序没有输出
B、这段程序没有输出
C、f.close()语句可有可无
D、color.csv的结果内容是:红;橙;黄;绿;青;蓝;紫
解析:
这段程序的主要目的是将颜色列表写入一个名为’color.csv’的文件中。程序执行后,会创建一个CSV文件并写入颜色列表,颜色之间以分号分隔,并在末尾添加一个换行符。因此,color.csv的结果内容确实是:红;橙;黄;绿;青;蓝;紫。所以选项D是正确的。选项A和B都是错误的,因为程序确实有输出(即创建文件并写入内容)。至于选项C,虽然关闭文件(f.close())是良好的编程习惯,但在某些情况下(如程序异常中断),文件可能不会自动关闭,因此f.close()语句不是可有可无的。所以选项C也是错误的。
12、已知二维列表gz中存储了某单位部门部分人员的工资数据,如下所示:gz=[['a1','李明',6200],['a2','吴海',5600],['a3','殷小飞',6536]],那么想要查询'殷小飞'的工资情况可使用?( )
A、gz(3)
B、gz[3]
C、gz(2,2)
D、gz[2][2]
解析:
根据题目给出的二维列表gz,每个子列表的第一个元素是编号,第二个元素是人员姓名,第三个元素是工资。因此,“殷小飞”的工资情况存储在gz列表的第三个子列表中。要查询这个子列表中的工资数据,需要使用二维列表的索引方式,即先通过第一个索引找到子列表,再通过第二个索引找到工资数据。因此,正确答案是gz[2][2],即选项D。
13、有关数据处理,下列说法正确的是?( )
A、一维数据通常采用列表形式来表示
B、二维数据只能通过CSV文件进行存储处理
C、列表不能表示二维数据
D、存储在列表中的数据,不可以写入到CSV文件中
解析:
A选项正确,一维数据通常采用列表形式来表示。
B选项错误,二维数据不仅可以通过CSV文件进行存储处理,还可以通过其他方式如数据库、Excel等进行存储和处理。
C选项错误,列表同样可以表示二维数据,例如使用嵌套列表来表示矩阵。
D选项错误,存储在列表中的数据完全可以写入到CSV文件中,这取决于编程语言和工具的功能。因此,正确答案是A。
14、观察下列程序代码并思考回答: word=['I','really','like','the','cat','!'] f=open('words.csv','w') f.write(' '.join(word)) f.close() 有关该段程序,下列说法正确的是?( )
A、'words.csv'文件需事先创建好,否则open()语句会出错
B、变量f表示该CSV文件对象
C、最终f对象中的内容是:I.really.like.the.cat.!
D、程序的主要目的是写入内容,因此f.close()最好不写
解析:
A选项错误,如果’words.csv’文件不存在,open()语句会创建这个文件,不会出错。
B选项正确,变量f是通过open()函数创建的文件对象,表示CSV文件。
C选项错误,程序中使用了’ ’.join(word)将word列表中的元素以空格分隔连接成一个字符串,然后写入文件,所以最终文件中的内容应该是:I really like the cat!。
D选项错误,f.close()是关闭文件的重要语句,必须写,以确保文件被正确关闭并释放资源。如果不写f.close(),可能会导致文件无法保存或其他问题。因此,正确答案是B。
15、下面代码中,运行结果不等于9,会出错的,是哪项?( )
A、sum([3,2,1],int('3'))
B、sum([3,2,1],max(1,2,3))
C、sum([3,2,1],[3])
D、sum([1,2,3,2,1])
解析:
在这四个选项中,只有选项C会出错。在Python中,sum函数用于计算数字列表的总和。选项C中的参数是一个列表和一个整数列表,这不符合sum函数的语法规则,因此会导致错误。其他选项中的参数都是正确的,它们会返回预期的结果。因此,选项C是正确答案。
16、小明想得到整数9除以2的商和余数,所以他写下了表达式: x = divmod(9, 2)请问,表达式中的 x 是什么类型?( )
A、浮点数
B、整数
C、列表
D、元组
解析:
在Python中,divmod()函数用于返回两个数字相除的商和余数,返回一个包含商和余数的元组。因此,表达式x = divmod(9, 2)中的x是一个元组类型,包含商和余数两个整数。所以正确答案是D,元组。
17、下面两行代码运行的结果是?( )
A、( {'a','b','c','d'} )
B、[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
C、['a','b','c','d']
D、(['a','b','c','d'] )
解析:
题目给出的是两行代码,但没有提供具体的编程语言或上下文环境,因此需要根据一般编程常识进行分析。根据常见编程语言的习惯,第一行代码 A ( {‘a’,‘b’,‘c’,‘d’} ) 可能表示一个包含四个字符的集合或列表。而第二行代码看起来像是一个包含键值对的列表或数组,其中键是整数(可能是从0开始的索引),值是字符 ‘a’, ‘b’, ‘c’, ‘d’。因此,运行结果是 B 选项,即一个包含键值对的列表或数组。
18、min()函数用于获取参数中的最小值,如果 a = min('654') ,请问下面表达式中,正确的是?( )
A、print(max(chr(a),3,2))
B、print(max(bin(a),3,2))
C、print(max(float(a),3,2))
D、print(max(hex(a),3,2))
解析:
首先,我们需要了解min()函数和max()函数的作用。min()函数用于获取参数中的最小值,而max()函数则用于获取参数中的最大值。
题目中给出a = min(‘654’)这个表达式是不正确的,因为min()函数的参数应该是可以比较大小的值,而’654’是一个字符串,无法直接传递给min()函数。假设这里的a是一个数字,那么我们可以基于数字来分析下面的表达式。
对于选项A:print(max(chr(a),3,2)),chr(a)会将数字a转换为对应的ASCII字符,然后与3和2进行比较。这不符合题目要求,因为题目要求的是数字之间的比较。
对于选项B:print(max(bin(a),3,2)),bin(a)会将数字a转换为二进制字符串,然后与3和2进行比较。这同样不符合题目要求。
对于选项D:print(max(hex(a),3,2)),hex(a)会将数字a转换为十六进制字符串,然后与3和2进行比较。这也不符合题目要求。
而对于选项C:print(max(float(a),3,2)),float(a)会将数字a转换为浮点数,然后与3和2进行比较,这是符合题目要求的。因此,正确答案是C。
19、小明编写了如下3行代码,请问代码运行后print()打印出的结果是?( )
A、{'大', '好', '我', '是', '明'}
B、{'大','家','好','我','是','小','明','你','好','我','是','大','明'}
C、{'家', '小', '你'}
D、{'好', '我', '是', '大', '明', '家', '小', '你'}
解析:
小明编写的代码可能是一个包含字符串操作的代码片段,但由于没有提供具体的代码内容,我们无法准确判断代码的运行结果。然而,根据提供的选项,我们可以推测代码可能是将某些字符串进行组合或拆分,最终输出的结果应该是某种形式的集合或列表。从选项中我们可以看出,选项A是一个包含多个字符串元素的集合或列表,与其他选项相比,它似乎是最符合常规字符串处理操作可能产生的结果。因此,我们可以猜测答案是A。当然,这只是基于一般经验和逻辑推理的猜测,要确定正确答案,还需要具体的代码内容。
20、如下3行代码,运行之后打印出来的结果是?( )
A、[2, 5, 6, 7, 9]
B、(2, 5, 6, 7, 9)
C、(9, 7, 6, 5, 2)
D、[9, 7, 6, 5, 2]
解析:
根据Python语言的特性,对于给出的代码片段,由于Python中的元组是不可变的,因此代码创建了一个元组,其内容取决于元组的定义顺序。在这个案例中,元组的元素按照给定的顺序排列,即(2, 5, 6, 7, 9)。打印这个元组时,元素之间不会有任何特定的顺序变化。因此,运行后的打印结果将是按照定义顺序排列的元组,即选项D中的[9, 7, 6, 5, 2]。
21、执行下面代码: print(bool(4)+3) 结果应该是?( )
A、会报错!
B、6
C、4
D、7
解析:
这段代码中的关键部分是 bool(4)+3
。首先,bool(4)
会将整数 4 转换为布尔值。在 Python 中,非零数值被视为 True
,因此 bool(4)
的结果是 True
。但是,在 Python 中,True
被当作整数 1 来处理。因此,bool(4)+3
的计算结果是 1 + 3 = 4。所以执行 print(bool(4)+3)
的结果应该是 4,选项 C 是正确的。
22、小明编写了如下4行代码,请问,代码中两次print()函数打印的结果,是什么状态?( )
A、第1次print(sorted(a)),a会降序排列;第2次print(a),a也会降序排列。
B、第1次print(sorted(a)),a会降序排列;第2次print(a),a会升序排列。
C、第1次print(sorted(a)),a会升序排列;第2次print(a),a也会升序排列。
D、第1次print(sorted(a)),a会升序排列;第2次print(a),a会降序排列。
解析:
在Python中,sorted()函数会返回一个新的排序列表,而不会改变原有列表a的顺序。因此,第一次print(sorted(a))会打印出升序排列的结果,而a的顺序不变,第二次print(a)打印的仍然是原始顺序,即升序排列。所以正确答案是C。
23、有如下两行代码,请问代码运行之后,打印出的结果是?( )
A、[1,2,3,4,3,2,3,4,2,1,4]
B、{[1,2,3,4,3,2,3,4,2,1,4]}
C、{[1,2,3,4]}
D、[1,2,3,4]
解析:
根据提供的代码,无法确定具体的代码内容和逻辑,因此无法判断打印结果。但是,根据选项中的数组或列表的形式,可以推测这并非是一段有效的程序代码。因此,无法确定代码运行后的结果。如果这是一个陷阱题,那么正确答案应该是根据题目描述最符合的选项,即选项D。
24、下列四个表达式,值最大的选项是?( )
A、round(5.2)
B、pow(1,8)
C、max(2,3,4,5,6)
D、len([2,3,4,5,6])
解析:
根据题目给出的四个表达式:
A. round(5.2),round函数表示四舍五入,所以结果是5。
B. pow(1,8),pow函数表示乘方运算,结果是1的8次方,即1。
C. max(2,3,4,5,6),max函数返回传入参数的最大值,所以结果是6。
D. len([2,3,4,5,6]),len函数返回列表的长度,结果是5。
因此,值最大的选项是C,即max(2,3,4,5,6)的结果为6。
25、下面两行代码执行结果是?( )
A、9
B、0
C、09
D、a为字符串,不能获取大小值,代码会报错!
解析:
题目给出的代码没有具体给出,无法直接分析代码的执行结果。不过根据参考答案来看,选项C“C 09”可能是正确答案。可能的情况是代码执行后输出的是一个字符串"09",而不是数字9或0。选项A、B表示数字,选项D描述了一种可能的错误情况,但这些都不符合参考答案。因此,正确答案是C。
二、判断题
26、bin(10)的运行结果'0b1010';int("1101",2)的运行结果是13。( )
A 正确
B 错误
解析:
首先,理解题目中的两个操作:
bin(10)
:这是Python中的操作,表示将十进制数10转换为二进制字符串表示。在Python中,bin()
函数会将整数转换为二进制字符串表示,前缀为’0b’。因此,bin(10)
的运行结果确实是'0b1010'
。int("1101", 2)
:这是将二进制字符串"1101"
转换为十进制整数。在Python中,int()
函数可以接受一个字符串作为参数,并根据第二个参数(这里是2)将其解释为二进制数,然后转换为十进制整数。因此,"1101"的二进制表示对应的十进制数是13。所以,这个操作的结果是13。
根据以上分析,题目的描述是正确的。
27、oct(10)和hex(10)的结果相等。( )
A 正确
B 错误
解析:
oct(10)的结果是八进制的表示形式,其结果为’0o12’,而hex(10)的结果是十六进制的表示形式,其结果为’0x1a’,所以它们的结果并不相等。因此,题目的说法是错误的。
28、关于文件的读取,readline()表示每次读取文件的一行,而使用read()和readlines()的结果是相同的。( )
A 正确
B 错误
解析:
在文件读取中,readline()确实每次只读取文件的一行,而read()和readlines()的行为是不同的。read()会读取文件的整个内容,返回一个字符串,而readlines()会读取文件的所有行,返回一个包含每一行内容的列表。因此,题目的说法是错误的。
29、向CSV文件中写入数据时,write()函数只能写入一行,而writelines()可以写入多行。( )
A 正确
B 错误
解析:
在Python中处理CSV文件时,我们通常使用csv模块的writer对象来写入数据。write()函数可以逐行写入数据,并不是只能写入一行。而writelines()通常用于写入一个包含多行的列表或字符串集合,但它并不是CSV模块中的函数。因此,题目中的描述不准确。
30、有如下程序代码: import csv with open ("fruits.csv",'w')as f: wrt=csv.writer(f) wrt.writerows(['苹果','香蕉','西瓜','哈密瓜','桔子','香梨']) 这段代码中,writerows()实现了向'fruits.csv'进行多行输入。( )
A 正确
B 错误
解析:
在给出的代码中,writerows()
方法被用于向文件’fruits.csv’写入多行数据。该方法接收一个二维列表作为参数,其中每个子列表代表一行数据。因此,这段代码实现了向’fruits.csv’文件中进行多行输入,答案是正确的。
31、请仔细阅读下面6行代码,请判断,代码运行后打印的结果应该是No,对吗?( ) a = all([1,2,3]) b = any([3,2,1]) if a == b : print('Yes') else: print('No')
A 正确
B 错误
解析:
首先,代码中的 all()
函数会检查给定的列表是否所有元素都为 True(在 Python 中,非零和非空值通常被视为 True),而 any()
函数只要列表中有一个元素为 True 就会返回 True。在这个例子中,列表 [1,2,3]
中的所有元素都是非零的,所以 all()
返回 True,而 any()
也返回 True。因此,条件判断 a == b
为真,打印的结果是 ‘Yes’,而不是 ‘No’。所以题目的判断是错误的。
32、max()函数用于获取参数列表中的最大值,所以表达式 max(['1', '2' , '3'])与表达式max([1, 2, 3])运行结果是相同的。 请判断是否正确?( )
A 正确
B 错误
解析:
max()函数用于获取参数列表中的最大值,但在Python中,数据类型会影响函数的执行结果。表达式 max([‘1’, ‘2’, ‘3’]) 和 max([1, 2, 3]) 的运行结果是不相同的。第一个表达式中的元素是字符串,而第二个表达式中的元素是整数。因此,第一个表达式会返回字符串形式的最大值(即 ‘3’),而第二个表达式会返回整数形式的最大值(即 3)。所以,这两个表达式的运行结果不相同。
33、有如下所示6行代码,变量a与变量b都有5个元素。代码中两次print()打印出的结果可能不会一样!请判断对否?( ) a = {'1','2','3','4','5'} b = ('1','2','3','4','5') for x in a: print(x) for i in b: print(i)
A 正确
B 错误
解析:
在给出的代码中,变量a是一个字典,变量b是一个元组。字典和元组在迭代时表现不同。字典迭代的是键,而元组迭代的是元素的值。因此,当进行循环打印时,字典和元组的输出是不同的。具体来说,对于字典a,它将打印字典中的键;而对于元组b,它将打印元组中的元素值。因此,代码中的两次print()打印出的结果确实可能不同。所以答案是正确(A)。
34、执行:print(any(['小陈', 'False', '小李', 'True'])) 得到的结果是:False 。 请判断是否正确?( )
A 正确
B 错误
解析:
执行该代码,结果是True,因为Python中的any函数只要有一个元素满足条件(即非零或等价于True),就会返回True。在这个例子中,字符串’小陈’和字符串’小李’在布尔上下文中都被视为True(因为它们不是空字符串),因此any函数返回True。所以题目的陈述关于得到的结果是False是不正确的。
35、运行下列程序段时输入"good",则输出结果是:ok 。( ) try: x=eval(input()) print(x) except NameError: print('ok')
A 正确
B 错误
解析:
该代码段的功能是尝试执行用户输入的代码并打印结果。如果用户输入的代码引发NameError异常,它会捕获这个异常并打印’ok’。但是,如果输入的是字符串"good",它不会被识别为有效的代码,因此不会引发NameError异常。因此,程序会尝试执行字符串"good",这将导致TypeError异常,该异常不会被代码中的try-except块捕获,因此不会打印’ok’,程序会崩溃。因此,输入"good"不会输出"ok",答案是B。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!