一、单选题
1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( )(2024.3py3级)
A 小程序
B 计时器
C 操作系统
D 神话人物
2、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。(2024py4级)
A 制造自动驾驶汽车
B 创立培训学校
C 发明汉字激光照排系统
D 成立方正公司
3、下面有关Python的说法,正确的是( )。
A Python是低级程序设计语言,适合初学者
B Python一门编译型语言
C 和C/C++、Java一样,Python也是静态类型的语言
D Python是脚本型程序设计语言
4、有关Python语句 print(3,2,sep='#') 说法错误的是( )。
A 3和2称之为位置参数
B sep称之为命名关键字参数
C 3和2称之为变参参数
D sep参数可以放在3和2之前
5、下面Python代码执行后,第4行输出是( )。
A [1, 2] [1, 2] [1, 2, 1, 2, 1, 2]
B [1, 100] [1, 100] [1, 100, 1, 100, 1, 100]
C [1, 100] [1, 2] [1, 2, 1, 2, 1, 2]
D [1, 100] [1, 100] [1, 2, 1, 2, 1, 2]
6、下面Python代码最后执行后最后一行输出是( )。
A [2, 6, 10, 14, 18] [1, 3, 5, 7, 9]
B [1, 3, 5, 7, 9] [2, 6, 10, 14, 18]
C [2, 6, 10, 14, 18] [2, 6, 10, 14, 18]
D [1, 3, 5, 7, 9] [1, 3, 5, 7, 9]
7、下面Python代码执行后输出是( )。
A 3 [1, 2, 3]
B 3 3
C [1, 2, 3] [1, 2, 3]
D [1, 2, 3] 3
8、下面Python代码执行后输出是( )。
A 3, 1
B (3, 1)
C 3
D 报错。因为第2行只能返回一个值,不可以是两个值
9、Python代码 print({(i,i ** 2) for i in range(5)}) 执行后可能输出是( )。
A ((0, 0), (1, 1), (2, 4), (3, 9), (4, 16))
B [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
C {(2, 4), (4, 16), (0, 0), (1, 1), (3, 9)}
D {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
10、下面Python代码执行,其输出是( )。
A True True True True
B True False False True
C False False False False
D True True False True
11、在Python中,对list、tuple或str类型执行in运算,其时间复杂度均为( )。
A O(N)
B O(N2)
C O(1)
D 非上述备选答案
12、下列Python代码用于寻找1~100之间的因数最多的数及其因数,程序本意是factor变量存储形如{6:[1,2,3,6],8:[1,2,4,8]}。下面有关说法正确的是( )。
A 程序第5行存在语法错误,因为append()的返回值为None
B 程序第5行存在语法错误,当某个数第1次作为factor的key时,其对应的值为append()的返回值即None,当该数第2次作为factor的key时,factor.get(i,[])返回值为None不再是[],append()不能成其为函数
C 程序第6行存在语法错误,因为max()不能有key参数
D 程序第6行存在语法错误,max()虽然可以有key作为参数,但其中lambda函数存在语法错误
13、在如下Python代码中,假设变量zen代表很多字符此处仅为示例,代码实现按小写字母频次升序,如频次相同则按字符ASCII升序输出,横线处应填入是( )。
A alphaCount[c] += 1
B alphaCount[c.lower()] += 1
C alphaCount[c.lower] = alphaCount.get(c.lower,0) + 1
D alphaCount[c.lower()] = alphaCount.get(c.lower(),0) + 1
14、下面Python代码能正确执行。在代码被执行之前,abc.txt已经存在,其文件字节数为100。下面有关说法,正确的是( )。
A abc.txt的内容将被覆盖,但由于没有写入操作,文件字节数为0
B abc.txt的内容不会被覆盖,因为没有执行任何文件写入操作,abc.txt将继续原样存在
C 原abc.txt的内容将被复制到abc.bak之中,然后覆盖abc.txt,由于没有写入操作,因此文件字节数为0
D abc.txt将被删除,因为第一行代码执行后,原文件内容将被删除,但由于没有写入操作,因此abc.txt将不会存在
15、下列Python代码执行后,将输出的是( )。
A 0#2#
B 0#1#2#
C 1#2#
D 0#
二、判断题
16、任何一个for循环都可以转化为等价的while循环。( )
A 正确
B 错误
17、小杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接入到WIFI盒子才能收看节目,那这个WIFI盒子具有路由器的功能。( )(python)
A 正确
B 错误
18、小杨在练习Python准备GESP考试的过程中,发现如果执行import os,可以通过os.system()启动外部程序,因此也可以说Python是一个小型操作系统。( )
A 正确
B 错误
19、在Python中,任何一个while循环都可以转化为等价的for循环( )。
A 正确
B 错误
20、在Python中,list类型有sort()函数,但tuple、set和dict则没有sort()函数。( )
A 正确
B 错误
21、当对list和tuple类型执行in运算时,其时间复杂度为 O(N) 。( )
A 正确
B 错误
22、在Python中, [i*2 for i in range(10) ]*3 是合法的表达式。( )
A 正确
B 错误
23、在下面Python代码中,文本文件abc.txt共有10行,每行由1个英文半角字母组成。第5行代码执行后其输出为10。( )
A 正确
B 错误
24、在Python中,已执行 tpl = ([1,2],[3,4],[5,6]) ,如果执行 tpl[1] = [99,100] 将报错,而执行tpl[1][1] = [99,100] 则不会报错。( )
A 正确
B 错误
25、在Python中,表达式 len(set("China")^set("china")) 的值为2。
A 正确
B 错误
三、实操题
26、相似字符串
问题描述
对于两个字符串A和B,如果A可以通过删除一个字符,或插入一个字符,或修改一个字符变成B,那么我们说A和B是相似的。
比如 apple 可以通过插入一个字符变成 applee ,可以通过删除一个字符变成 appe ,也可以通过修改一个字符变成 bpple ,因此 apple 和 applee 、 appe 、 bpple 都是相似的。但 applee 并不能通过任意一个操作变成bpple ,因此它们并不相似。
特别地,完全相同的两个字符串也是相似的。
给定T组A,B,请你分别判断他们是否相似。
输入描述
第一行一个正整数T。
接下来T行,每行两个用空格隔开的字符串A和B。
保证T≤100,A,B的长度不超过50。保证A和B只包含小写字母。
输出描述
输出T行,对于每组A,B,如果它们相似,则输出 similar ,否则输出 not similar 。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。(python)
样例输入 1
5 apple applee apple appe apple bpple applee bpple apple apple
样例输出 1
similar similar similar not similar similar
参考答案:```pythonT = int(input())for _ in range(T):A, B = input().split()if len(A) == len(B):if sorted(A) == sorted(B):print("similar")else:print("not similar")else:if abs(len(A) - len(B)) > 1:print("not similar")else:dp = [[0] * (len(B) + 1) for _ in range(len(A) + 1)]for i in range(len(A) + 1):for j in range(len(B) + 1):if i == 0:dp[i][j] = jelif j == 0:dp[i][j] = ielif A[i - 1] == B[j - 1]:dp[i][j] = dp[i - 1][j - 1]else:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1if dp[len(A)][len(B)] == 0:print("similar")else:print("not similar")```
27、做题
题目描述
小杨同学为了提高自己的实力制定了做题计划,在第k天时,他必须要完成k道题,否则他就会偷懒。
小杨同学现在找到了一个题库,一共有n套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成题单内所有的题。
那么问题来了,小杨同学最多会做题几天才偷懒呢?
输入格式
第一行,1个数为n,表示有多少套题单。
第二行,n个整数a1,a2,...,an,分别表示每套题单有多少道题。
输出格式
输出一行,小杨同学偷懒前最多做题天数。
样例输入
4 3 1 4 1
样例输出
3
对于全部数据,保证有1≤n≤106,1≤ai≤109。
(python)
参考答案:这道题是一个动态规划问题,可以使用动态规划算法来解决。首先,我们需要定义一个数组dp,其中dp[i]表示小杨同学在前i套题单中最多可以做的天数。我们可以从第一套题单开始,依次考虑每套题单。对于每套题单,我们有两种选择:1. 使用这套题单,那么在前i-1套题单中,小杨同学最多可以做的天数为dp[i-1]。由于小杨同学必须要完成i道题,因此我们需要找到一种方法,使得在前i-1套题单中,小杨同学最多可以做的天数加上这套题单中的题目数量大于等于i。即,我们需要找到一个j,使得dp[j] + a[i] >= i,其中a[i]表示第i套题单中的题目数量。2. 不使用这套题单,那么在前i套题单中,小杨同学最多可以做的天数就是dp[i-1]。因此,我们可以得到状态转移方程:dp[i] = max(dp[j] + 1),其中j的取值范围是0到i-1,且满足dp[j] + a[i] >= i。最后,我们遍历所有的题单,找到最大的dp值,即为小杨同学最多可以做的天数。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!