#563. 202406中国电子学会Python编程等级测试四级(客观题)

202406中国电子学会Python编程等级测试四级(客观题)

选择题

  1. 执行以下程序后所输出的结果是?( )
def f(n):
    s=0
    for i in range(2, n+1):
        p = True
        for j in range(2, int(i**0.5)+1):
            if i % j == 0:
                p = False
                break     
        if p==True and i%3==1:
            s=s+i
    return s
print(f(13))

{{ select(1) }}

  • 20
  • 41
  • 21
  • 91

  1. 以下说法错误的是?

{{ select(2) }}

  • python中可以在不同的自定义函数中声明相同名字的变量,使用时不会造成数据混乱
  • 形参在其自定义函数内不能与其它变量重名
  • 全局变量可以被多个自定义函数调用
  • 因为全局变量作用域是整个程序,所以局部变量和全局变量不能使用相同变量名

  1. 当程序运行时,如果自定义函数内某个变量与程序的全局变量使用相同的变量名,程序会如何处理?( )

{{ select(3) }}

  • 优先调用全局变量,屏蔽局部变量
  • 优先调用局部变量,屏蔽全局变量
  • 程序报错
  • 将二者视为相同变量,赋值等操作会对二者同时产生影响

  1. 如下代码,运行之后,最终打印结果是?( )
def f(x):         
    color=["红","橙","黄","绿","青","蓝","紫"] 
    def lucky(x,y):     
        n=x+y
        return n
    m=x*int(lucky(5,6))%7
    print("幸运颜色是:",color[m])
f(5)

{{ select(4) }}

  • 幸运颜色是:红
  • 幸运颜色是:橙
  • 幸运颜色是:黄
  • 幸运颜色是:紫

  1. 以下有关return 语句的表述中错误的是?( )

{{ select(5) }}

  • return语句可以出现在函数内部的任何位置

  • 一个函数内可以存在多个return语句,但在函数执行过程中,只有一个会被执行

  • 一个函数可以没有return语句,视为返回一个None对象

  • return`语句可以返回多个值,比如return a,b,c,将返回一个列表[a,b,c]


  1. 以下关于关键字nonlocal 和 global表述中错误的是?( )

{{ select(6) }}

  • global声明的变量将变成全局变量
  • nonlocal只能声明引用上一层函数中的局部变量,如不存在则会继续向上一层寻找
  • nonlocal 和 global相同点是在函数体内改变非局部变量的值
  • global声明变量时不能同时对该变量赋值

  1. 用枚举算法求解“各位数之和等于8的所有三位数”时,下列枚举范围中效率最高的是?( )

{{ select(7) }}

  • 0-999
  • 100-999
  • 100-800
  • 107-800

  1. 下列关于分治算法的描述中,错误的是?( )

{{ select(8) }}

  • 问题的规模分解到一定的程度,问题容易解决
  • 问题可以分解为若干个规模较小相同问题
  • 问题所分解出的各个子问题是可以相互交叉
  • 问题分解出的子问题的解可以合并为该问题的解

  1. 解决下列问题体现分治算法思想的是?( )

{{ select(9) }}

  • 打印1000以内的完美数(完美数是除了本身之外的因数之和等于本身)
  • 输出100以内能被5整除的整数
  • 求斐波那契数列第n项
  • 用快速排序算法对n个整数升序排序

  1. 有6位学生的身高分别为“166、168、169、171、172、175”,其中小王的身高为172,若采用二分查找,则需要找多少次才能够找到小王?( )

{{ select(10) }}

  • 1
  • 2
  • 3
  • 4

  1. 阶乘是一个数与所有小于它的正整数的乘积。例如,5的阶乘(写作5!)是5 * 4 * 3 * 2 * 1 = 120。以下是用递归方法编写求阶乘的代码,横线处填写的代码是?( )
def fun(n):
    if n == 1:
        return 1
    else:
        return ________
print(fun(5))

{{ select(11) }}

  • n * (n-1)
  • fun(n-1)
  • n * fun(n-1)
  • fun(n*(n-1))

  1. 运行如下代码,请输出运算结果?( )
def fun(lst):
    if len(lst) == 0:
        return 0
    return lst[0] + fun(lst[1:])
x = [1,2,3,4,5]
print(fun(x))

{{ select(12) }}

  • 9
  • 6
  • 10
  • 15

13.以下是编写一个Python函数,使用递归方法实现字符串的反转,请在横线处填写正确的代码?( )

def fun(s):
    if len(s) <= 1:
        return s
    else:
        return _____________
x = "abcde"
print(fun(x))

{{ select(13) }}

  • fun(s[1:])
  • fun(s[1:]) + s[0]
  • fun(s[:1]) + s[0]
  • fun(s[:1])

  1. 运行以下代码,请输出运算结果?( )
def fun(s, n):
    if n == 0:
        return ""
    else:
        return s + fun(s, n-1)
s = "abc"
n = 3
print(fun(s, n))

{{ select(14) }}

  • abc
  • abab
  • abcabcabc
  • ababab

  1. 运行以下代码,请输出运算结果?( )
x = 1
while x < 100:
    if  x % 3 != 0:
        print(x, end=',')
    elif x // 10:
        break
    x += 2
print(x)

{{ select(15) }}

  • 1
  • 3,9,11
  • 3,6,9,10
  • 1,5,7,11,13,15

  1. 下面图形每一行从字母A开始,以ABC方式重复。行数为输入的整数。请在python代码段横线处填入合适的代码?( )
A 

AB 

ABC 

ABCA 

ABCAB 

ABCABC 

ABCABCA
n = int(input())
for i in range(1, n+1):
    for j in range(0, i):
        print("%s" % _____________, end='')
    print()

{{ select(16) }}

  • 'A' + j / 3
  • chr(ord('A') + j % 3)
  • 'A' + j % 3
  • chr(ord('A') + j / 3)

  1. 以下哪种情况下适合使用自定义函数?( )

{{ select(17) }}

  • 体现自己独特思路的功能块
  • 代码量大的功能块
  • 会多次用到的功能块
  • 逻辑复杂的功能块

  1. 调用自定义函数时,以下哪种情况下程序运行时一定会出错?( )

{{ select(18) }}

  • 对实参以关键字赋值的方式去调用函数
  • 对形参赋以默认值
  • 给赋予了默认值的形参传入新值
  • 传入的实参个数比形参个数少

  1. 以下程序语句中,存在语法错误的是?( )

{{ select(19) }}

  • result= lambda a:a+b
  • lambda a,b,c:a**0.5
  • lambda a,b=10:a*b
  • dlt=lambda a,b,c:b**0.5-4ac

  1. 对于如下自定义的函数
def myfunc(a,b,c)
    return a+b+c

以下调用该函数的语句中,能正确执行的是?( )

{{ select(20) }}

  • myfunc(1,2)
  • myfunc(a=3,2,1)
  • myfunc(3,b=2,1)
  • myfunc(3,2,c=1)

  1. 对于以下自定义函数及程序,运行后的结果是?( )
def prts( str ):

   print (str)

   return str

s="Py"

prts(prts(s))

{{ select(21) }}

  • 出错
  • Py
  • Py及None
  • Py及Py

  1. 使用*args和**kwargs形参来定义函数时,正确的说法是?( )

{{ select(22) }}

  • 使用*args代表列表,使用**kwargs代表元组
  • 可以在调用函数时传入多个实参
  • 不再允许设置位置参数或关键字参数
  • 可以设置位置参数或关键字参数,但必须放置在*args参数前面

  1. 下列关于函数return语句的说法,正确的是?( )

{{ select(23) }}

  • return语句中返回值的数据类型可以是字符串,也可以是列表
  • 一个函数中只能有一个return语句
  • return语句中不能有表达式
  • return只能返回一个值

  1. 用Python绘制y=x**2+6*x+2的函数图像,需要用到的模块是?( )

{{ select(24) }}

  • plot
  • pygame
  • matplotlib
  • turtle

  1. 陈明同学利用Python语言编写了一段“根据出生年月判断生肖属相”的程序,调试运行时,程序没有报错且顺利运行,但未能正确输出对应属相,造成这个结果的原因可能是?( )

{{ select(25) }}

  • 程序语句语法错误
  • 程序复杂度高,算法效率低
  • Python的环境配置不对
  • 求解算法的逻辑错误

判断题

  1. 如果在函数内访问其作用域内不存在的变量,程序一定会报错。( )

{{ select(26) }}

  • 正确
  • 错误

  1. 时间复杂度最小的是常数阶O(1)。( )

{{ select(27) }}

  • 正确
  • 错误

  1. 某同学参加猜幸运数(幸运数范围是1-100之间)游戏:先猜50,主持人说偏大;然后猜25,主持人说偏小;然后又猜37……通过这种策略,该同学很快猜出幸运数,这体现了分治思想。( )

{{ select(28) }}

  • 正确
  • 错误

  1. 某个问题既能用递归算法求解,又能用递推算法求解,则使用递归算法求解更容易,效率也高得多。( )

{{ select(29) }}

  • 正确
  • 错误

  1. 执行如下代码,输出结果是95。( )
n = 100
while n > 0:
    if n % 2:
        break
    elif n % 3 == 0:
        n -= 5
    else:
        n -= 20
print(n)

{{ select(30) }}

  • 正确
  • 错误

  1. 编程时,必须把实现复杂功能的代码封装起来,设计成函数。( )

{{ select(31) }}

  • 正确
  • 错误

  1. 自定义函数中可以不使用return语句,但匿名函数中要通过return语句返回运算结果。( )

{{ select(32) }}

  • 正确
  • 错误

  1. 如果允许形参设置默认值,则函数定义时要先列出没有默认值的形参,再列出有默认值的形参。( )

{{ select(33) }}

  • 正确
  • 错误

  1. Numpy是Python的一个第三方库,是一个科学计算库,提供各种数学运算和科学计算的方法。( )

{{ select(34) }}

  • 正确
  • 错误

  1. 变量作用域的使用可提高程序逻辑的局部性,增强程序的可靠性,减少名字冲突,有效提高程序运行效率。( )

{{ select(35) }}

  • 正确
  • 错误