不超过100个元素的有序数列,使用二分查找能找到指定的元素,可能的查找次数不包括?( )
1次
6次
7次
8次
下列哪个不是Python第三方库的pip安装方法?( )
使用pip命令
使用wheel命令
集成安装方法
文件安装方法
下列关于递归的描述不正确的是?( )
递归函数一定包含条件控制语句
递归函数一定包含调用自身的语句
在调用自身函数时需要明确的边界终止条件
递归算法一般代码简洁,执行效率高,空间复杂度低
关于函数的定义语句,以下几项中正确的是?( )
def f(c=2,a,b):
def f(a,b=2,c):
def f(*c,**d,a,b):
def f(a,b,*c,**d):
下列哪个不是Python中的内建函数?( )
asc(x)
ord(x)
chr(x)
abs(x)
下列哪个Python语句段的时间复杂度最低?( )
if n%2==0: x=x*2 else: x=x+2
n=1 while n<=100: x=x+2
for i in range(100): for j in range(10): x=x+2
for i in range(100): for j in range(i): x=x+2
在Python程序中,设已定义函数op,它有一个整型传值参数,一个字符串型传值参数。设x,y为整型变量,z为字符串型变量,则下列能调用该函数的正确语句是?( )
op
op(x,y,z)
op x,y
op(x+y,z)
如果需要在某函数内部调用上一层的局部变量,则可以使用( )关键字。
Local
nonlocal
global
nonglobal
运行下列程序,输出结果正确的是?( )
def fun(x,y=5): return x*y a=fun(10,10) print(a)
100
50
10
运行出错
下列程序段的正确运行结果是?( )
def fun(m,n): while m!=n: if m>n: m=m-n else: n=n-m return m print(fun(24,16))
4
8
-8
2
用匿名函数方式求两个数中较大的数,下列定义语句格式正确的是?( )
result = lambda 'x,y': y if x> y else x
result= lambda x,y: y if x> y else x
result= lambda 'x,y': x if x> y else y
result= lambda x,y: x if x> y else y
某程序代码设计如下,若输入整数5,则最终输出的结果为?( )
def fact(x): if x==1: s=1 else: s=fact(x-1)*x return s n=int(input("请输入一个大于1的整数:")) print(fact(n)+fact(n-1))
120
24120
144
12024
已知有n本按照书名拼音排序好的图书,使用对分查找法搜索其中任何一本书,最多查找次数为6次,则n的值可能为?( )
20
50
80
110
调用以下函数时,语句“s=s+i”被执行的次数是?( )
def f(): s=0 i=1 while i<10: if i%3==0 or s%2==1: s=s+i i=i+1 print(s)
3
4
5
6
下列关于函数的描述正确的是?( )
函数是可重复使用的,用来实现单一,或相关联功能的代码段
函数中必须return语句
函数好处是模块性,但不能提高代码的利用率
函数内容以冒号起始,可以不缩进
运行以下代码,正确的打印结果是?( )
def f(s): t=0 max=0 for i in s: if i>="0" and i<="9": t=t+1 else: if t>max: max=t t=0 print(max) list="123ab45cd6d" f(list)
0
1
2
3
有100枚金币,其中有1枚轻1克的假金币,现在要找出这枚假金币,但身边只有1个没有刻度的天秤。小明先是将金币分成50枚一堆,共两堆称重,在轻的那一堆中又分成两堆,接着在轻的25枚中分成12,12,1三堆称重,若两堆12枚的重量相同,则假币为单独剩下的那一枚,否则在轻的那一堆中继续按照之前的办法称下去,直到找到假金币。请问小明采用的办法与哪个算法有着相似之处?( )
递归
分治
枚举
贪心
关于Turtle库的表述中,错误的是?( )
Turtle库是Python语言中一个很流行的绘制图像的函数库。
画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
turtle.circle( )是只能画一个指定半径为r的圆。
turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
运行以下代码,输出结果正确的是?( )
a=1 b=c=[] def fun(a,c): a=2 c.append(a) fun(a,c) print(a,b,c)
2 [2] [2]
1 [] [2]
1 [2] [2]
2 [] [2]
关于递归与递推方法的比较,错误的观点是?( )
递归是将复杂问题降解成若干个子问题,依次降解,求出低阶规模的解,代入高阶问题中,直至求出原问题的解;
递推是构造低阶的问题,并求出解,依次推导出高阶的问题以及解,直至求出问题的解;
数学上的递推关系可以通过递归的方法来实现;
递归算法代码简洁,运行速度比递推快,因此应该尽量采用递归的方法;
关于python函数参数的说法正确的是?( )
函数一定要有参数和返回值
在调用一个函数时,若函数中修改了形参变量的值,则对应的实参变量的值也被修改
参数的值是否会改变,与函数中对变量的操作有关,与参数类型无关
函数的形参在函数被调用时获得初始值
观察程序段,以下说法错误的是?( )
def fib(n): if n==1 or n==2: s=1 else: s=fib(n-1)+fib(n-2) return s m=int(input("请输入m的值(m>2):")) print(fib(m))
如果输入m的值为8,打印的结果为20
该程序段用了递归来实现
如果缺少语句“return s”,程序会报错
语句“def fib(n):”中的n为形参
10个人站一列,分苹果,问第10个人分到多少个苹果,他说比前面一个人多分到2个,依次往前,都说比前面一个人多分到2个,最后问第一个人,他说分到10个苹果。用以下函数求第10个人分到的苹果数,则应补充选项为?( )
def apple(n): if n == 1: return 10 else: return print(apple(10))
apple(n)+2
n+2
apple(n-1)+2
apple(n+1)-2
运行以下代码,正确的打印结果是?( )
def f(): c=0 for i in range(4,51,4): if i%6==0: c=c+1 return c print(f())
1
2
4
8
对于下列递归式子,当n=4时,F的值是?( )
F(n)=F(n-1)+3 F(1)=2
2
5
11
14
def add(a, b, c=0):
return a+b+c
print(add(1, 2, 4))
这段程序的运行结果为3。
设计一个程序来求xn(x的几次方)的值,算法思想是:把xn转换为x*xn-1,而xn-1又可以转换为x*xn-2,如此重复下去,直到x*x0,而x0=1,从而求出了xn的值。这个程序可以用递归来实现。
使用分治算法求解,子问题不能重复。
下列程序段返回的值为“Hello!Python”。
lst="Hello!Python" def f(): global lst lst="Hello!" return lst f() print(lst)
在python函数中,局部变量不能与全局变量重名。
使用python -m pip install --upgrade pip命令能够升级pip。
已有函数def demo(*p):return sum(p),表达式 demo(1, 2, 3, 4) 的值为10。
sum=0 for i in range(5): sum=sum+i print(sum)
运行以上程序,输出结果是15
算法复杂度分析的目的是分析算法的效率,以求改进。
下列程序段能正确打印1。
def f(a,b): a=a+b b=a-b a=a-b return b print(F(1,4))
利用分治思想,给定一个顺序表,编写一个求出其最大值的程序。
根据上述算法思想,补全下列代码。
输入输出示例:当顺序表是 [22,13,34,4,68,15,5,58,36],输出:68
def fun_max(num=list): return max(num) def fun(num): n = ① if n <= 2: return ② l_list, r_list = num[:n//2], num[n//2:] l_max, r_max = ③ return fun_max( ④ ) if __name__ == "__main__": alist = [22,13,34,4,68,15,5,58,36] print(fun(alist))
现有n个人依次围成一圈玩游戏,从第1个人开始报数,数到第m个人出局,然后从出局的下一个人开始报数,数到第m个人又出局,...,如此反复到只剩下最后一个是胜利者。设n个人的编号分别为1,2,...,n,打印出局的顺序。
根据上述算法思想,补全下列代码。
输入输出示例:当n=10,m=4,输出如下:
出局的人是: 4
出局的人是: 8
出局的人是: 2
出局的人是: 7
出局的人是: 3
出局的人是: 10
出局的人是: 9
出局的人是: 1
出局的人是: 6
最后胜利者是: 5
def fun(n,k): L = list( ① ) if n == 1: return else: x = 0 for i in ② x = ③ - 1 print('出局的人是:',L[x]) del L[x] if x < 0: x = 0 print('最后胜利者是:', ④ ) fun(10,4)
设计一个算法,将一个正整数分解质因数。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,输出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
根据上述算法思想,补全下列代码。
输入输出示例:当n=105,输出:105= 3*5*7
当n=60,输出:60= 2*2*3*5
def fun(n): print('%d='%n,end=' ') for i in ① : while n!=i: if n>i and ② : print(i,end='*') ③ else: break else: ④ break if __name__ == "__main__": while True: num=input("输入一个正整数:") if not num.isdigit(): break fun(int(num))