Python语言程序设计 (第11期) 测验5: 函数和代码复用

共10道单选题和2道编程题,限答1次、限时50分钟

选择题
1.以下选项不是函数作用的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (D)
A.用代码
B.强代码可读性
C.降低编程复杂度
D.提高代码执行速度度

2.下列程序的输出结果为:(A)

def f(a,b):
  a=4
  return  a+b
def main():
  a=5
  b=6
  print(f(a,b),a+b)
main()

A.10 11
B.10 10
C.11 10
D.11 11

正确答案 A
这里没有全局变量,都是函数局部变量的运算

3.以下关于Python函数说法错误的是:(B)

def func(a,b):
  c=a**2+b
  b=a
  return c
a=10
b=100
c=func(a,b)+a

A.执行该函数后,变量a的值为10
B.执行该函数后,变量c的值为200
C.该函数名称为func
D.执行该函数后,变量b的值为100

c的值应该为210

4.以下关于函数调用描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (B)
A.函数和调用只能发生在同一个文件中
B.自定义函数调用前必须定义
C.Python内置函数调用前需要引用相应的库
D.函数在调用前不需要定义,拿来即用就好

正确答案 B
函数调用前必须已经存在函数定义,否则无法执行。
Python内置函数直接使用,不需要引用任何模块。

5.以下关于模块化设计描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (A)
A.应尽可能合理划分功能块,功能块内部耦合度低
B.高耦合度的特点是复用较为困难
C.模块间关系尽可能简单,模块之间耦合度低
D.应尽可能合理划分功能块,功能块内部耦合度高

6.以下对递归描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (D)
A.写简单
B.定要有基例
C.递归程序都可以有非递归编写方法
D.执行效率高

正确答案 D
递归不提高程序执行效率。
任何递归程序都可以通过堆栈或队列变成非递归程序(这是程序的高级应用)。
数大一点,递归是真的慢。

7.以下关于函数说法错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (C )
A.函数可以看做是一段具有名字的子程序
B.函数是一段具有特定功能的、可重用的语句组
C.对函数的使用必须了解其内部实现原理
D.函数通过函数名来调用

正确答案 C
调用函数不需要知道函数内部实现原理,只需要知道调用方法(即接口)即可。

8.哪个选项对于函数的定义是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (C )
A.def vfunc(a,b=2):
B.def vfunc(a,*b):
*C.def vfunc(a,b):
D.def vfunc(a,b):

正确答案 C
def vfunc(*a, b) 是错误的定义:*a表示可变参数,可变参数只能放在函数参数的最后。

9.关于return语句,以下选项描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (D)
A.函数中最多只有一个return语句
B.函数必须有一个return语句
C.return只能返回一个值
D.函数可以没有return语句

正确答案 D
函数可以包含0个或多个return语句
python里return可以返回多个值

10.以下关于递归函数基例的说法错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (C )
A.递归函数的基例不再进行递归
B.递归函数必须有基例
加粗样式C.每个递归函数都只能有一个基例
D.递归函数的基例决定递归的深度

正确答案 C
每个递归函数至少存在一个基例,但可能存在多个基例。

程序设计题

1.随机密码生成
描述
补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
产生密码采用random.randint()函数。

输入 输出
3 634
524
926
import random
def genpwd(length):
    a=random.randint(pow(10,length-1),pow(10,length))#产生[100,1000)区间的整数
    return a
length = eval(input())
random.seed(17)
for i in range(3):
    print(genpwd(length))

2.连续质数计算
描述
补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。

输入 输出
12 13,17,19,23,29
def prime(m):
    for i in range(2,m):
        if m % i == 0:
            return False
    return True

n = eval(input())
n_ = int(n)
n_ = n_+1 if n_ < n else n_ #舍去小数部分与原来进行比较
count = 5

while count > 0:
    if prime(n_):
        if count > 1:
            print(n_, end=",")
        else:
            print(n_, end="")
        count -= 1 
    n_ += 1

这一章讲到了递归,我还有一份C语言的递归练习 ㄟ( ▔, ▔ )ㄏ
点击练习

原创文章 27 获赞 26 访问量 7784

猜你喜欢

转载自blog.csdn.net/unseven/article/details/105232305