测验5: 函数和代码复用 (第5周)
单项选择题
点击选项选择正确答案,每题有且仅有一个正确答案
1.以下选项不是函数作用的是:
A.复用代码
B.增强代码可读性
C.降低编程复杂度
D.提高代码执行速度
正确答案 D
函数不能直接提高代码执行速度。
2.下列程序的输出结果为:
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. 11 10
C. 11 11
D. 10 10
正确答案 A
这里没有全局变量,都是函数局部变量的运算。
3.以下关于Python函数说法错误的是:
def func(a,b):
c=a**2+b
b=a
return c
a=10
b=100
c=func(a,b)+a
A. 执行该函数后,变量c的值为200
B. 该函数名称为func
C. 执行该函数后,变量b的值为100
D. 执行该函数后,变量a的值为10
正确答案 A
这里没有全局变量,请在IDLE中执行代码观察结果。
4.以下关于函数调用描述正确的是:
A. 函数和调用只能发生在同一个文件中
B. Python内置函数调用前需要引用相应的库
C. 自定义函数调用前必须定义
D. 函数在调用前不需要定义,拿来即用就好
正确答案 C
函数调用前必须已经存在函数定义,否则无法执行。
Python内置函数直接使用,不需要引用任何模块。
5.以下关于模块化设计描述错误的是:
A.高耦合度的特点是复用较为困难
B.应尽可能合理划分功能块,功能块内部耦合度高
C.模块间关系尽可能简单,模块之间耦合度低
D.应尽可能合理划分功能块,功能块内部耦合度低
正确答案 D
模块内高耦合、模块间低耦合。
6.以下对递归描述错误的是:
A.执行效率高
B.递归程序都可以有非递归编写方法
C.一定要有基例
D.书写简单
正确答案 A
递归不提高程序执行效率。
任何递归程序都可以通过堆栈或队列变成非递归程序(这是程序的高级应用)。
7.以下关于函数说法错误的是:
A.对函数的使用必须了解其内部实现原理
B.函数通过函数名来调用
C.函数可以看做是一段具有名字的子程序
D.函数是一段具有特定功能的、可重用的语句组
正确答案 A
调用函数不需要知道函数内部实现原理,只需要知道调用方法(即接口)即可。
8.哪个选项对于函数的定义是错误的?
A. def vfunc(a,*b):
B. def vfunc(*a,b):
C. def vfunc(a,b):
D. def vfunc(a,b=2):
正确答案 B
def vfunc(*a, b) 是错误的定义:*a表示可变参数,可变参数只能放在函数参数的最后。
9.关于return语句,以下选项描述正确的是:
A.函数中最多只有一个return语句
B.return只能返回一个值
C.函数可以没有return语句
D.函数必须有一个return语句
正确答案 C
函数可以包含0个或多个return语句
10.以下关于递归函数基例的说法错误的是:
A.每个递归函数都只能有一个基例
B.递归函数必须有基例
C.递归函数的基例不再进行递归
D.递归函数的基例决定递归的深度
正确答案 A
每个递归函数至少存在一个基例,但可能存在多个基例。
程序设计题
程序设计题需要你亲自编写代码完成作答, 通常需要读取特定输入并输出特定的结果。 请点击下方题目进入作答
随机密码生成
描述
补充编程模板中代码,完成如下功能:
以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。
产生密码采用random.randint()函数。
输入输出示例
输入 | 输出 |
---|---|
3 | 634 524 926 |
import random
def genpwd(length):
a = 10**(length-1)
b = 10**length - 1
return "{}".format(random.randint(a, b))
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
连续质数计算
描述
补充编程模板中代码,完成如下功能:
获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。
输入输出示例
输入 | 输出 |
---|---|
12 | 13,17,19,23,29 |
def prime(m):
index = 0
while index < 5:
for i in range(2, m):
if m % i == 0:
break
else:
index = index + 1
if index < 5:
print("{},".format(m), end="")
else:
print("{}".format(m))
m = m + 1
n=eval(input())
m=round(n)
if n!=m:
prime(round(n)+1)
else:
prime(n)
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
转载:https://blog.csdn.net/weixin_45468907/article/details/105585812