选择题 共25道

01 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38


判断题 共10道

02 03 04 05 06 07 08 09 10 11


编程题 共2道

12 13

257 | 202309Python四级真题-练习
选择题 共25道
01

考察以下函数定义代码:

def func(x:int,y:str)->str:

   z=x*y

   return z

以下陈述正确的是?( )


2分
登录后查看选项
15

用枚举算法求解“100以内既能被3整除又能被4整除的元素”时,在下列数值范围内,算法执行效率最高的是?( )

2分
登录后查看选项
16

下列有关函数的描述中,正确的是?( )

2分
登录后查看选项
17

下列哪个语句能够定义参数个数不确定的函数?( )

2分
登录后查看选项
18

执行如下Python代码的结果是?( )

def area(r,pi=3.14):
    return r*r*pi
print(area(2,10))

2分
登录后查看选项
19

执行如下Python代码,输出结果是?( )

def hs(num):
   num += 1
   return num
n=10
s=hs(n)
print(s)

2分
登录后查看选项
20

有如下Python程序,输出的结果是?( )
def whao(year = '2023'):
   print('你好' + year)
whao()

2分
登录后查看选项
21

编写计算正方体体积的匿名函数,下列哪一个语句是正确的?( )

2分
登录后查看选项
22

执行如下Python程序,运行的结果是?( )

def zfzh(s):
   c = ''
   for ch in s:
       if "9">=ch>= "0":
           c+=str(int(ch)+1)
       elif "z">=ch>= "a":
           c+= chr(ord(ch)- ord("a")+ord("A"))
   return c
s = 'hzag-21-8'
print(zfzh(s))

2分
登录后查看选项
23

在Python中,以下哪个代码是安装numpy模块的方法?( )

2分
登录后查看选项
24
在Python中导入第三方库的主要关键字是?( )


2分
登录后查看选项
25

《阅微草堂笔记》里描述了槐树果实“响豆”,在夜里爆响,这种豆一棵树只有一粒,难以辨认出。所以古人就等槐树开花结果后,用许多布囊分别贮存豆荚,用来当枕头。夜里如果没有听到声音,便扔掉。如果有爆响声。然后把这一囊的豆荚又分成几个小囊装好,夜里再枕着听……如此这么分下去直到找到响豆。以上故事体现的算法是?( )


2分
登录后查看选项
26

下列哪项不是分治算法所具有的特征?( )

2分
登录后查看选项
27

两位同学玩猜数字游戏,规则如下:一方在心里默想一个范围在1-100之间的数,如果另一方猜的数字比对方想的要大,就说大了;如果猜的数字比想的要小,就说小了,直到猜中数字。那么使用二分查找法最多需要猜测的次数是?( )

2分
登录后查看选项
28

用递推算法求解n个自然数的乘积,请问代码中横线上需要填入的正确代码是?( )

def fact(n):

   s=1

   for i in range(1,n+1):

       s=s*i

   return ________

a=fact(5)

print(a)

2分
登录后查看选项
29

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

可以用下列代码解决这个问题,请问这段代码是基于( )算法编写的?

high=100

s=0

sum=0

for i in range(10):

   s,high=high+high/2,high/2

   sum=sum+s

sum=sum-high

print(sum)

print(high)

2分
登录后查看选项
30

用递归算法求1~n个连续自然数的乘积的代码如下,请选择合适的代码补全程序?( )
def Chengji(n):
   if n <=1:
       return 1
   else:
       return _____?______
print(Chengji(3))

2分
登录后查看选项
31

有一根绳子,第一次剪去一半多2米,第二次剪去剩下的一半多2米,第三次剪去剩下的一半多2米,第四次剪去剩下的一半多2米,第五次剪去剩下的一半多2米,此时绳子还剩2米。这根绳子长几米?想解决这个问题的话,可以采用以下哪种算法?( )

2分
登录后查看选项
32

小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个。第二天早上又将剩下的桃子吃一半,又多吃一个。以后每天早上吃前一天剩下的一半另加一个。到第5天早上猴子想再吃时,发现只剩下一个桃子了。问第一天猴子共摘多少个桃子?

这个问题可以用递归来解决,代码如下:

def peach(day):

   if day==1:

       return 1

   return (peach(day-1) + 1)*2

s=peach(5)

print('一共有%d只桃子'%(s))

请问第2行的“if day == 1”代码起到的作用是?( )

2分
登录后查看选项
33

下列代码可以求两个数的最小公倍数。请认真阅读下列代码运用了什么算法?( )

def lcm(s,m,n):

   if s%n==0:

       return s

   else:

       return lcm(s+m,m,n)

a=int(input('请输入第1个数:'))

b=int(input('请输入第2个数:'))

c=lcm(a,a,b)

print('{}和{}的最小公倍数是{}'.format(a,b,c))

2分
登录后查看选项
34

关于函数,正确的描述是?( )

2分
登录后查看选项
35

关于全局变量和局部变量,正确的描述是?( )

2分
登录后查看选项
36

定义以下函数:


def func(x,y,z=2):


   print(x+y+z)


分别以func(1,2,3)和func(1,2)语句调用该函数,运行后的结果分别是?( )

2分
登录后查看选项
37

在嵌套函数中,也就是一个函数里面还有一个函数,如果内部函数需要修改外部变量的值,处理的方法是?( )

2分
登录后查看选项
38

在自定义函数中,如果发现局部变量与全局变量同名,则?( )

2分
登录后查看选项
判断题 共10道
02

函数是将实现相同功能的代码封装在一起,实现代码复用。( )

2分
登录后查看选项
03

关键字实参通过“关键字=值”的方式传值,函数参数全部采用此方式传值时,不需要考虑函数调用过程中形参的顺序。( )

2分
登录后查看选项
04

函数的定义代码不需要在主程序调用函数之前。( )


2分
登录后查看选项
05

命令pip download <第三方库>表示下载并安装指定的第三方库。( )

2分
登录后查看选项
06

二分查找又称对折半查找,例如:在数列3417259103中查找3,适合采用二分查找法。( )

2分
登录后查看选项
07

递归算法不涉及高深的数学知识,使得很多比较复杂的问题,也可以用简洁的代码解决,代码的执行效率比较高,所以即使有其他算法可行,也应该首选递归算法解决问题。( )

2分
登录后查看选项
08

递归算法中,必然存在函数体内调用自身的情况,可以在最后调用,也可以在中间调用。( )

2分
登录后查看选项
09

Python程序中,自定义函数可以放在整个程序的开头,也可以放在主程序之后,比较自由。( )

2分
登录后查看选项
10

通过把某些特定功能语句设计成自定义函数,可以简化主程序的编写。( )

2分
登录后查看选项
11

下面代码的时间复杂度为O(n*n)。( )

arr = [ 2, 3, 4, 10, 40 ]

n = len(arr)

for i in range(n):

   for j in range(0, n-i-1):

       if arr[j] > arr[j+1] :

           arr[j], arr[j+1] = arr[j+1], arr[j]

2分
登录后查看选项
编程题 共2道
12

从键盘上分别输入要查找和替换的字符串,对文本文件进行查找与替换,替换后保存到新的文本文件中。

 

思路:输入待查找字符串s,需查找子字符串key和替换字符串new,通过调用自定义函数replace实现替换。完善划线处代码。

 

s = input("请输入待查找的字符串:")

 

key = input("请输入需查找的子字符串:")

new = input("请输入要替换的字符串:")

def findstr(key, s, begin):

      for i in range(begin,len(s) - len(key) + 1):

           if s[i:        ①        ]== key:

 

              return i

      return -1

def replace(key, new, s):

      begin = 0

      while begin <         ②        :

            pos = findstr(key,s, begin)

            if pos ==-1:

                      break

            else:

                  s = s[0:pos]+ new + s[pos + len(key):        ③        ]

                  begin =  pos + len(key)

       return s

rst =        ④          #调用函数替换字符

print(rst)

10分
登录后作答
13

一个列表中存在n个数据,可以用分治算法来找到其中的最小值。具体过程如下:如果列表元素的个数小于等于2的时候,经过一个判断就找到其中的最小值,所以可以先把数据从中间划分为左右两部分,然后通过递归把每一部分再划分为左右两部分,直到数据规模小于等于2的时候,返回结果,然后通过递归到最后为两个数据对比,我们就可以找到最小值。

请根据以上算法过程,补全代码。

# 求列表中小于两个元素的最小值

def get_min(number):

    if len(number) == 1:

        return         ①        

    else:

        if number[1] > number[0]:

            return number[0]

        else:

            return number[1]

 

def solve(number):

    n = len(number)

    if n <= 2:

        return get_min(number)

    else:

        # 将整个列表分为左右两部分

        left_list, right_list =         ②        , number[n//2:]

        # 递归(树),分治

        left_min, right_min = solve(left_list),         ③        

        return get_min([left_min, right_min])

 

test_list = [5, 11, 3, 2, 7, 9]

print(solve(test_list))

10分
登录后作答