试卷总分:100分
选择题 25题 50分
判断题 10题 20分
编程题 3题 30分
下列问题体现分治算法思想的是?
编写如下Python代码求两个数的最大公约数,划线处选择合适的代码?
def gcd(m, n): if m % n == 0: return n else: return _________ print(gcd(49, 28))
有如下Python程序,执行程序后输出的结果是?
def fib(n): a = b = 1 for i in range(3,n+1): c = a + b a = b b = c return c print(fib(5))
小明每天存钱,第一天存1元,之后每天存前一天的2倍。他想用递归算法求出第几天可以存到32元。请问以下Python程序的递归调用次数是?
def save_days(amount, target=32): if amount >= target: return 0 return 1 + save_days(amount * 3) print(save_days(1))
小明每天存钱,第一天存1元,之后每天存前一天的2倍。 小明编写的Python程序,若递归函数缺少终止条件,会导致什么问题?
老师用递归函数计算连续自然数1到5的和,调用sum_r(5) 时实际递归调用了几次函数?
def sum_r(n): if n == 1: return 1 return n + sum_r(n-1)
递归算法的Python程序实现问题,下列说法正确的选项是?
小美想用递归算法实现字符串反转,以下代码能正确反转字符串,划线处应该填写哪个选项?
def r(s): if len(s) <= 1: return s return r( ) + s[0] s='abcde' print(r(s))
家里有16平方米的房间要打扫,小明和小红两兄妹分别想解决打扫的问题。 小明想用递归的方法解决“打扫房间”的问题:每次打扫一半区域,直到剩余区域小于1平方米。 以下哪项是递归解决此问题的核心思想?
小明写了一个关于计算梯形面积的函数,运行如下Python代码的结果是什么?
def s(a, b, h): area = (a + b) * h / 2 print(s(1, 2, 2))
下列有关Python自定义函数的描述,正确的是?
在Python语言中,运行如下代码,执行结果正确的是?
x = 10 def fun(x): print(x) x = 5 fun(x) print(x)
有如下Python程序,执行该程序后输出的结果是?
a = 5 def fun(): global a a = a *2 print(a) fun() print(a)
小明正在用Python编写一个“魔法数字盒”程序。这个数字盒有一个特殊功能:每次按下按钮时,数字会根据内部规则变化。以下是程序的一部分代码,如果小明连续按下按钮两次,屏幕上会显示什么数字?
def magic_box(): num = 0 # 初始数字是0 def press_button(): nonlocal num num += 1 # 每次按下按钮,数字加1 return num return press_button button = magic_box() print(button()) # 第一次按下按钮 print(button()) # 第二次按下按钮
Python3.5之后的版本新增了对函数参数和返回值的类型指定和检查,运行如下代码块,结果正确的是?
def fun(a:int, b:int)->int: if(a > b): return a + b else: return b print(fun("3", "2"))
在Python语言中,导入第三方库的语法正确的是哪一项?
在Python语言中,可以使用pip命令安装第三方库,以下哪个命令是安装命令?
在Python语言编程中,创建一个自定义函数,用于统计图书借阅次数,以下正确的无参函数定义是?
小张想用lambda函数计算两个数的和,正确的写法是?
有如下Python自定义函数,能正确调用该函数的选项是?
def f(a,b,c) return a-b/c
下面Python代码的输出结果是?
def add(x=2, y=3): return x + y print(add(y=5))
在下列Python代码中,将data变为全局变量,横线处应该填入的是?
data = 0 def add_data(): ______ data+= 2 # 修改全局变量
有以下食堂点餐Python函数,现需要点"牛肉面"、不点甜品(dessert),下列四个点餐选项中最合适的是?
def order_meal(food, dessert=None): ...
在Python语言编程中,以下哪个函数调用后,可以打印输出欢迎语“Welcome!”?
下列哪种情况的程序,时间复杂度最低?
分治思想是将一个大问题分解成若干个小问题,分别解决这些小问题,然后再将小问题的解合并起来以解决原始的大问题。程序实现时必须使用递归程序。
Python语言编程中,递归函数可以没有终止条件,只要问题规模能自动缩小到最小值。
对于斐波那契数列,递推算法的时间复杂度远低于递归算法。
Python语言中,全局变量的作用域是整个程序,局部变量的作用域是函数内部。所以执行以下代码块打印输出是"wang"。
name = "zhang" def fun(name): print(name) name = "wang" fun(name)
在Pyhon语言中,nonlocal关键字用来在定义局部变量的同时,修改全局变量的值;global关键字用来在函数或局部作用域使用外层(非全局)变量。
小明想用Python画一幅彩色的图画,他听说可以使用一个叫turtle的库来完成。因此,必须打开命令窗口输入"pip install turtle"来安装这个第三方库。
Python语言编程中,函数convert = lambda x: str(x)可以把数字转为字符串。
在Python中,自定义函数的函数体内必须有return语句。
函数参数**kwargs可以接收学号-姓名键值对。
时间复杂度为O(n)的程序,比时间复杂度为O(n2)的程序执行效率要高。
回文单词
某同学收集了很多单词,不同的单词之间用'-'拼接在一起,如'refer-level-face-',他发现有些单词如level,从左往右读和从右往左读该单词是一样的,称之为回文单词。他想统计他收集的单词中有多少个回文单词。步骤如下:(1)首先将单词按'-'分割出所有单词,(2)统计这些单词中回文单词的数量。编写的Python代码如下,完善划线处的代码。
def revstr(str): if len(str) == 1: return ① else: return ② word = 'refer-level-face-' wordlst = [] s = '' for t in word: if t !='-': ③ else: wordlst.append(s) s = '' c = 0 for w in wordlst: rev = revstr(w) if ④ : c += 1 print('对称的字符串个数有',c)
孪生素数
素数是指大于1的自然数,且只能被1和它本身整除的数。孪生素数是指差值为2的两个素数,例如 (3, 5)、(11, 13) 等。问题:给定一个整数 n,请编写程序输出所有小于等于 n 的孪生素数对,按升序排列。 补全下列程序代码。
def is_prime(num): if ① : return False for i in range(2, num): if ② : return False return ③ def find(n): for i in range(2,n-1): if is_prime(i) and ④ : print(i, i + 2) n = int(input()) find(n)
细胞分裂
在生物课实验中,有一个细胞,每分钟会分裂一次。前 2 分钟,它每次分裂会变成 2 个新细胞;从第 3 分钟开始,每次分裂会变成 3 个新细胞。下面的递归函数用于计算12分钟后细胞的总数,请完善划线处的代码。
def cell_division(n): if n == 0: return ① elif n <= 2: return ② else: return ③ print( ④ )