Python软件编程等级考试四级——20210314

本文包含了Python软件编程等级考试的理论单选题和判断题,以及三道编程实操题。题目涉及二分查找、递归、分治、函数参数、Turtle库、递归算法、列表操作、函数定义等多个方面,旨在考察考生对Python编程的深入理解和应用能力。
摘要由CSDN通过智能技术生成

Python软件编程等级考试四级——20210314

理论

单选题

1、 不超过100个元素的有序数列,使用二分查找能找到指定的元素,可能的查找次数不包括?

A、1次
B、6次
C、7次
D、8

2、运行以下代码,正确的打印结果是?

def f():
	c=0
	for i in range(4,51,4):
		if i%6==0:
			c=c+1
	return c
print(f())
A、1
B、2
C、4
D、8

3、10个人站一列,分苹果,问第10个人分到多少个苹果,他说比前面一个人多分到2个,依次往前,都说比前面一个人多分到2个,最后问第一个人,他说分到10个苹果。用以下函数求第10个人分到的苹果数,则应补充选项为?

def  apple(n):
	if n == 1:
		return 10
	else:
		return ____            
print(apple(10))
A、apple(n) + 2
B、n + 2
C、apple(n-1) + 2
D、apple(n+1) - 2

4、观察程序段,以下说法错误的是?

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))
A、如果输入m的值为8,打印的结果为20
B、该程序段用了递归来实现
C、如果缺少语句"return s",程序会报错
D、语句"def fib(n):"中的n为形参

5、关于python函数参数的说法正确的是?

A、函数一定要有参数和返回值
B、在调用一个函数时,若函数中修改了形参变量的值,则对应的实参变量的值也被修改
C、参数的值是否会改变,与函数中对变量的操作有关,与参数类型无关
D、函数的形参在函数被调用时获得初始值

6、关于递归与递推方法的比较,错误的观点是?

A、递归是将复杂问题降解成若干个子问题,依次降解,求出低阶规模的解,带入高阶问题中,直至求出原问题的解
B、递推是构造低阶的问题,并求出解,依次推导出高阶的问题以及解,直至求出问题的解
C、数学上的递推关系可以通过递归的方法来实现
D、递归算法代码简洁,运行速度比递推快,因此应该尽量采用递归的方法

7、运行以下代码,输出结果正确的是?

a=1
b=c=[]
def fun(a,c):
	a=2
	c.append(a)
fun(a,c)
print(a,b,c)
A、2 [2] [2]
B、1 [] [2]
C、1 [2] [2]
D、2 [] [2]

8、关于Turtle库的表述中,错误的是?

A、Turtle库是python语言中一个很流行的绘制图像的函数库
B、画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置
C、turtle.circle()是智能画一个指定半径为r的圆
D、turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快

9、有100枚金币,其中有1枚轻1克的假金币,现在要找出这枚假金币,但身边只有1个没有刻度的天秤。小明先是将金币分成50枚一堆,共两堆称重,在轻的那一堆中又分成两堆,接着在轻的25枚中分成12,12,1三堆称重,若两堆12枚的重量相同,则假币为单独剩下的那一枚,否则在轻的那一堆中继续按照之前的办法称下去,直到找到假金币。请问小明采用的办法与哪个算法有着相似之处?

A、递归
B、分治
C、枚举
D、贪心

10、运行以下代码,正确的打印结果是?

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)
A、0
B、1
C、2
D、3

11、下列关于函数的描述正确的是?

A、函数是可重复使用的,用来实现单一,或相关联功能的代码段
B、函数中必须有return语句
C、函数好处是模块性,但不能提高代码的利用率
D、函数内容以冒号起始,可以不缩进

12、调用以下函数时,语句“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)
A、3
B、4
C、5
D、6

13、已知有n本按照书名拼音排序好的图书,使用对分查找法搜索其中任何一本书,最多查找次数为6次,则n的值可能为?

A、20
B、50
C、80
D、100

14、某程序代码设计如下,若输入整数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))
A、120
B、24120
C、144
D、12024

15、用匿名函数方式求两个数中较大的数,下列定义语句格式正确的是?

A、result = lambda 'x,y':y if x>y else x
B、result = lambda x,y:y if x>y else x
C、result = lambda 'x,y':x if x>y else y
D、result = lambda x,y:x if x>y else y

16、下列程序段的正确运行结果是?

def fun(m,n):
    while m!=n:
        if m>n:
            m=m-n
        else:
            n=n-m
    return m
print(fun(24,16))
A、4
B、8
C、-8
D、2

17、运行下列程序,输出结果正确的是?

def fun(x,y=5):
    return x*y
a=fun(10,10)
print(a)
A、100
B、50
C、10
D、运行出错

18、如果需要在某函数内部调用上一层的局部变量,则可以使用( )关键字

A、Local
B、nonlocal
C、global
D、nonglobal

19、在Python程序中,设已定义函数op,它有一个整型传值参数,一个字符串型传值参数。设x,y为整型变量,z为字符串型变量,则下列能调用该函数的正确语句是?

A、op
B、op(x,y,z)
C、op x,y
D、op(x+y,z)

20、下列哪个语句段的时间复杂度最低?

A、
if x%2 == 0:
	x = x * 2
else:
	x = x + 2
B、
n = 1
while n <=100:
	x = x + 2
C、
for i in range(100):
	for j in range(10):
		x = x + 2
D、
for i in range(100):
	for j in range(i):
		x = x + 2

21、下列哪个不是Python中的内建函数?

A、asc(x)
B、ord(x)
C、chr(x)
D、abs(x)

22、关于函数的定义语句,以下几项中正确的是?

A、def f(c=2,a,b)
B、def f(a,b=2,c)
C、def f(*c,**d,a,b)
D、def f(a,b,*c.**d)

23、下列关于递归的描述不正确的是?

A、递归函数一定包含条件控制语句
B、递归函数一定包含调用自身的语句
C、在调用自身函数时需要明确的边界终止条件
D、递归算法一般代码简洁,执行效率高,空间复杂度低

24、下列哪个不是Python第三方库的pip安装方法?

A、使用pip命令
B、使用wheel命令
C、集成安装方法
D、文件安装方法

25、对于下列递归式子,当n=4时,F的值是?

F(n)=F(n-1)+3    F(1)=2
A、2
B、5
C、11
D、14

判断题

26、以下程序的运行结果为3。

def add(a, b, c=0):
	return a+b+c
print(add(1, 2, 4))

27、算法复杂度分析的目的是分析算法的效率,以求改进。

28、运行以下程序,输出结果是15。

sum=0
for i in range(5):
	sum=sum+i
print(sum)

29、已有函数def demo(*p):return sum§,表达式 demo(1, 2, 3, 4) 的值为10。

30、使用python -m pip install --upgrade pip命令能够升级pip。

31、在python函数中,局部变量不能与全局变量重名。

32、下列程序段返回的值为“Hello!Python”。

lst="Hello!Python"
def f():
    global lst
    lst="Hello!"
    return lst
f()
print(lst)

33、使用分治算法求解,子问题不能重复。

34、设计一个程序来求xn(x的几次方)的值,算法思想是:把xn转换为x*xn-1,而xn-1又可以转换为x*xn-2,如此重复下去,直到x*x0,而x0=1,从而求出了xn的值。这个程序可以用递归来实现。

35、下列程序段能正确打印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= 357
当n=60,输出:60= 223*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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青岛少儿编程-王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值