Python中自定义函数的关键字是?
sub
def
function
void
下列关于函数的描述正确的是?
函数内的语句不会改变任何非全局变量的值
传入函数的参数都会以副本的形式存在函数中
函数的名称不能与Python的保留字相同。
每个函数必须有一个return语句。
下列哪项不是函数的优点?
提高代码的复用率。
使得程序简洁,程序功能清晰
便于程序的修改,便于扩展
代码运行速度更快。
运行下列程序,输出的结果是?
def dtox(x,base = 2): s = [] while x>0: s.append(x % base) x = x // base return s print(dtox(11))
程序出错
1101
[1, 1, 0, 1]
[1, 0, 1, 1]
有如下Python程序,包含lambda函数,运行该程序后,输出的结果是?
g = lambda x,y:x*y
print(g(2,3))
2
3
6
8
以下选项中,不属于第三方库安装工具pip能够实现的功能是?
安装一个第三方库。
卸载已经安装的第三方库。
修改已经安装的第三方库。
查询已经安装的第三方库。
下列关键字中,用来导入第三方库的是?
include
from
import
continue
函数如下:
def showNumber(numbers):
for n in numbers:
print(n)
下面哪个选项在调用该函数时会报错?
showNumber([2,4,5])
showNumber('abcesf’)
showNumber(3.4)
showNumber((12,4,5))
下列这段程序的打印结果是?( )
def demo(item,lis=[]): lis=[] lis.append(item) return lis print(demo('a'),end='') print(demo('b'))
['a']['a', 'b']
['a']['b']
[][]
[ ]['b']
对于下面的函数:
def f(x,z,y=2):
print(x+y+z)
用f(1,2,3)和f(1,2)两个调用语句,运行结果分别是?
都是5
6和5
都是6
5和6
函数中用return [表达式] 结束函数,选择性地返回一个值给调用方,有时不带表达式的return相当于返回?
0
None
1
False
下列代码的输出结果是?
def fun(a,b): t = a a = b b = t print(a, b) fun(pow(3,2),pow(2,3)) #pow(x,y)返回x**y的值
3 2
8 9
2 3
9 8
在函数中有一种叫空函数。 构造一个空函数,下面的横线处应填?( )
def 函数名( ):
______________
None
return None
pass
empty
Python编写的自定义函数dy,执行该程序段后,输出的结果是?( )
def dy(x,y): return x>y print(dy(10,20))
10
20
False
True
运行下列程序,输出的结果是?( )
def nxs(x): s = 0 while x: s = s * 10 + x % 10 x //= 10 return s print(nxs(106))
106
610
160
601
下列排序算法中利用了分治算法思想的是?
冒泡排序
插入排序
选择排序
快速排序
下列选项中,哪一项不是分治算法的特征?
问题的规模缩小到一定程度就可以容易解决。
该问题分解出的子问题的解可以合并为该问题的解
各个子问题必须分解到不能分解为止
该问题具有最优子结构性质。
在1-20之间玩猜数字的游戏时,如果采用二分法的策略,并且给‘大了’或‘小了’的提示,最差的情况下多少次就可以猜中?
5
10
15
20
运行下列程序,输出的结果是?
def f(n): if n==1 or n==2: return 1 elif n>2: return f(n-1)+f(n-2) else: return -1 print(f(-2))
-2
-1
出错
1
运行下列程序,输出的结果是?
def Pell(n): if n==1: return 1 if n==2: return 2 if n>=3: return 2*Pell(n-1)+Pell(n-2) print(Pell(4))
12
4
3
24
已知Pell数列定义如下:
第5项的值是?
29
30
12
32
运行下列程序,输出的结果是?( )
def f(n): if n==1 or n==2: return 1 elif n>2: return f(n-1)+f(n-2) else: return -1 print(f(4))
54
24
4
16
著名的菲波那契数列为1,1,2,3,5,8,……。即除开始的两项为1外,其余每一项均为前两项之和。
下面的程序实现计算该数列的第4项值的大小。
n,a,b=4,1,1 if n==1: print("第%d个数为%d。"%_____(1)______) if n==2: print("第%d个数为%d。"%(n,b)) if n>2: for i in range(2,n): result=a+b a,b=b,result print("第%d个数为%d。"%(n,result))
请问:横线(1)所在位置不适合填入以下哪个选项?
(n,1)
(n,a)
(n,b)
(a,n)
下列程序实现求菲波那契数列第4项的值:
def f(n): if n==1 or n==2: return 1 elif n>2: return f(n-1)+f(n-2) else: return -1 print(f(4))
请问:这种解决方法属于哪种算法?
归纳
列举
递推
递归
关于评价算法的优劣,以下说法正确的是?
只要考虑是否得出正确答案。
只要考虑算法的执行时间。
只要考虑算法所占用的空间
从算法执行时间和需占用的空间两方面考虑
使用分治算法解决问题的一般步骤是分解、求解、合并。
递归算法跟递推算法是一样的,都在重复调用。
对于递归而言,递推与回归,二者缺一不可。
在Python中使用爬虫技术抓取网站信息需要用到第三方库
算法优化主要是为了减少冗余数据,优化时间复杂度和空间复杂度。
自定义函数def块中的代码不是主程序的一部分,运行会跳过该段代码。
用户自定义函数是用户自己写的一段程序,一般包括函数名、参数、返回值、函数体等四部分。其中,函数名和参数是必不可少的部分。
Python中编写函数时,必须指明该函数的返回值。
错误
Python定义函数时,可选参数必须写在非可选参数后面
Python中自定义函数的代码需要写在调用该函数之前。
下面的程序运用分治算法寻找列表中的最大值。请将空格补全代码。
#子问题规模小于或等于2时 def zui_da_zhi(a_list): if ① : if a_list[0]>=a_list[1]: most=a_list[0] else: most=a_list[1] else: most=a_list[0] return most # 分治算法排序 def fen_zhi(init_list): n=len(init_list) if n<=2: #若问题规模小于或等于2,解决 return zui_da_zhi(init_list) #分解(子问题规模为n/2) left_list,right_list= ② #递归,分治 left_max,right_max= ③ #合并 return zui_da_zhi([left_max,right_max]) #测试数据 test_data=[12,25,4,47,69,5,4,6,37,89,21] print('最大值为:',fen_zhi(test_data))
辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的代码。
def gcd(a,b): m=a%b if m==0: return ① else: a=b ② return ③ print(gcd(12,18))
字符加密。将大写字母逐个按其ASCII值转换为7位二进制数,并在最左边补0,使得每个字母转换为8位二进制数,然后将8位二进制数每四位转为十六进制数。如明文是"CIE",加密后的密文是"434945"。编写的python程序如下,完善划线处的代码。
def xtob(n): #将整数转为二进制数 if n <= 1: return str(n) return xtob(n//2)+ ① mingwen = "CIE" he = '0123456789ABCDEF' rst = '' for c in mingwen: s = "0" + xtob(ord(c)) #将明文转为8位二进制数 i = 0 data = 0 while i < 8: data =data * 2 + ② if (i + 1) % 4 == 0: rst = rst + he[data] data = 0 ③ print('密文是:',rst)