试卷总分:100分
选择题 25题 50分
判断题 10题 20分
编程题 3题 30分
小明用Python语言设计如下函数,调用该函数执行的结果是?
def fun(a, b): if a > b: return a - b else: return b - a print(fun(1, 3))
老师写了一个上课点名的Python函数call(),函数接收一个列表参数存放同学的学号,代码如下:
def call(lst): for i in lst: print(f"第{i}号同学。")
下面哪个选项调用函数会程序报错?
运行以下Python代码,输出的结果是什么?
def fun(name): return "你好," + name print(fun("小明"))
小明在写Python代码统计自己每天吃的浆果数量,他写了一段嵌套函数的代码想让内层函数修改外层的计数变量,请问在横线处添加哪个关键字,才能实现正确修改外层函数的局部变量b_count的浆果数量?
def count(): b_count = 0 def i_count(): _______ b_count b_count += 1 print("当前浆果数:", b_count) i_count() print("最终浆果数:", b_count) count()
老师用Python语言设计了“班级集合通知”的程序,运行如下代码结果正确的是?
classroom = "四年级2班" def notice(): classroom = "音乐教室" print("请到" + classroom + "集合!") notice() print("当前教室是" + classroom + "。")
小明用Python语言写了一个乘法函数,为了让代码更加严谨,特别给参数和返回值指定了类型,运行如下代码结果正确的是?
def mul(a: int, b: int) -> int: return a * b a = '5' b = 2 print(mul(a, b))
小兔子要在一排胡萝卜里最快找出藏着“星星贴纸”的那根,胡萝卜按编号从小到大排好,每次根据提示判断目标在左半段还是右半段。这个找贴纸的做法用到的算法是?
果园里分苹果,一共有 8 个苹果,按分治思路平分:每次把一堆苹果平均分成左右两小堆,直到每堆只剩 1 个苹果就不再分。下面这段Python代码用来统计一共需要对半分多少轮,请问划线处应填写哪一项最合适?
def split(n): if n == 1: return 0 return ____________ print(split(8))
老师分糖果,不把糖果平均分两半,而是按男生、女生分成两组,分别计算糖果数量,再相加得到全部糖果总数。以下说法正确的是?
在Python语言中,导入第三方库用到下列哪个语句?
小明想在自己的Python程序里画出漂亮的词云图,他准备用Python自带的包管理工具安装词云第三方库,以下哪个命令能正确完成这个安装操作?
下列关于编程中使用函数意义的描述中,不正确的是?
Python中定义函数的代码如下所示,下列关于该函数的描述错误的是?
def hi(): print('hello,python')
关于Python编程中的匿名函数,下列说法错误的是?
某同学使用Python编写匿名函数计算长方形的面积,下列哪一个语句是正确的?
关于Python函数中的return语句,下列说法错误的是?
小明编写了一个程序,用来找出1到100之间所有“既是3的倍数,又是4的倍数”的数字。
方法A:让计算机从1到100逐个检查每个数字,看它是否同时满足这两个条件。
方法B:小明发现满足条件的数字其实就是12的倍数,于是直接让计算机从12开始,每次增加12(即12, 24, 36...)来寻找,直到超过100为止。
关于这两种方法,下列说法正确的是?
有如下Python程序段,执行该程序后输出的结果是?
c = 1 def fun(n): global c c = c + n print(c) fun(4) print(c)
下列有关递归的描述中,正确的是?
老师分玩具方法如下,第1次分掉其中一半加一个玩具,第2次分掉剩下的一半加一个玩具,之后每次都分掉剩下的一半加一个玩具。到第5次的时候老师发现只剩一个玩具了。请问老师一开始有多少个玩具? 这个问题最适合用以下什么算法解决?
定义一个函数,最多包含多少个参数?
执行如下Python程序段后,输出的结果是?
def su(a): if a == 1: return 1 return a % 10 + su(a // 10) print(su(12345))
用火柴棒搭一排连着的正三角形。搭 1 个三角形要 3 根,搭 2 个要 5 根,搭 3 个要 7 根……搭50个三角形要多少根火柴棒?
小明同学编写如下Python程序求整数a,b的最大公约数,选择划线处的正确代码?
def gcd(a, b): if a % b == 0: return b ____________
阅读如下Python代码,该代码的算法思想是?
text = '' n = 5 for day in range(1, n + 1): letter = chr(64 + day) text = text + letter * day print(text)
在Python语言中,匿名函数有返回值时,不需要加上“return”关键字。
在 Python 函数调用时,使用关键字参数必须严格按照函数定义时的参数顺序进行传递。
Python 语言中,函数带有默认值的参数必须写在没有默认值的参数前面。
分治算法可以把大问题分解成相互独立且完全不相同的子问题,然后求解子问题,最后把所有子问题的解合并起来就是原问题的解。
小明想写一个随机分配水果的Python小游戏,他说random是Python的标准库,不用额外安装,直接写import random就能导入使用。小明的这个说法是正确的。
在编写程序解决复杂问题时,只要程序能够顺利运行并且最终得出的结果是正确的,就说明这个算法已经是最优的,不需要再去考虑代码的运行速度和内存占用问题了。
Python自定义函数时可以没有参数。
使用Python编写程序时,把完成特定功能的独立代码块,设计成函数。
递归的核心思想是需要解决的问题可以转化为一个或多个子问题来求解,而这些子问题的求解方法与原问题相同,只是在数量和规模上不同。
递推算法设计时,先寻找规律,确定递推表达式,从而求解问题。
月壤检测
我国“嫦娥六号”月球探测器成功从月球背面带回珍贵土壤样本。科学家需要将采集到的样本分成若干批进行分析。假设一共有 n 个样本,每次只能将当前样本平均分成2份进行递归检测,如果样本数为奇数则先减去1再平分,多出的 1 份单独归档,不再参与后续检测。当只剩1个样本时,检测完成。
请补全下面的程序代码,计算共需要多少轮“平分操作”。
def check(n): if n == ①: return 0 else: if ② == 1: n = n - 1 return 1 + check(③) # 计算20个样本需要多少轮平分操作 result = check(20) print(f"20个样本共需要平分{④}轮")
投球测试
篮球课上进行了5分钟投球测试,老师想统计投中次数最多的3位同学。小明同学利用Python编写程序帮老师解决这个问题。首先将学生姓名和投中数存储在列表xm和a中,调用函数求投中次数最多的3位同学,最后输出3位同学的姓名。Python代码如下,完善划线处的代码。
a = [98, 89, 68, 80, 98, 97, 89, 89] # 篮球投中样例数据 xm = ['学生1', '学生2', '学生3', '学生4', '学生5', '学生6', '学生7', '学生8'] # 以8位学生为例 f = [False] * len(a) rst = [] def getmax(): maxz = 0 maxp = 0 for i in range(len(a)): if ① and a[i] > maxz: maxz = a[i] ② # 实时记录maxz的索引号 return maxp for i in range(3): pos = ③ f[pos] = ④ rst.append(xm[pos]) print(rst) # 输出结果
创客比赛
在某创客作品比赛中,有8个作品进入了决赛,他们的评分分别是:[98, 95, 88, 89, 94, 93, 95, 91]。
为了找出评分最高的作品,评委会决定采用“分治思想”实现:
分:把8个作品分成两组(每组4个作品)。
治:两组作品继续用同样的方法,直到每组只剩下 1 个作品。
合:相邻的两个小组的“最高”进行一场PK,评分数值大的那个获胜,成为新小组的“最高者”。继续这个步骤,直到选出最高分。
def find_max(plist): if ①: return plist[0] ② left = plist[:mid] right = plist[mid:] left = find_max(left) right = find_max(right) if ③: return left else: return right cj = [98, 95, 88, 89, 94, 93, 95, 91] maxs = ④ print(f"最高分是: {maxs}")