菜单
个人主页
(当前)
写文章
浏览博文
    
搜索
登录
微信公众号
站点链接
半根蓝白个人主页
CSDN
Github
友情链接
摘繁华个人博客
博文目录
#custom-toc-container
测验5: 函数和代码复用 (第5周)
BGLB0324
2020年7月18日 17:22
最后发布:2020年7月18日 17:22
首发:2020年7月18日 17:22
555
0
博文分类:
Python
博文标签:
测验
版权声明:本文为博主[BGLB0324]原创文章,遵循
CC 4.0 BY
版权协议,转载请附上原文出处链接和本声明。
本文链接:
http://blog.bglb.work/blog/blog-detail/19
版权
# 测验5: 函数和代码复用 (第5周) ## 单项选择题 ### 1、以下选项不是函数作用的是: A、复用代码 B、降低编程复杂度 C、提高代码执行速度 D、增强代码可读性 **正确答案 C** 函数不能直接提高代码执行速度。 ### 2、下列程序的输出结果为: ```python 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函数说法错误的是: ```python def func(a,b): c=a**2+b b=a return c a=10 b=100 c=func(a,b)+a ``` A、该函数名称为func B、执行该函数后,变量a的值为10 C、执行该函数后,变量b的值为100 D、执行该函数后,变量c的值为200 **正确答案 D** 这里没有全局变量,请在IDLE中执行代码观察结果。 ### 4、以下关于函数调用描述正确的是: A、函数在调用前不需要定义,拿来即用就好 B、自定义函数调用前必须定义 C、Python内置函数调用前需要引用相应的库 D、函数和调用只能发生在同一个文件中 **正确答案 B** 函数调用前必须已经存在函数定义,否则无法执行。 Python内置函数直接使用,不需要引用任何模块。 ### 5、以下关于模块化设计描述错误的是: A、应尽可能合理划分功能块,功能块内部耦合度高 B、模块间关系尽可能简单,模块之间耦合度低 C、高耦合度的特点是复用较为困难 D、应尽可能合理划分功能块,功能块内部耦合度低 **正确答案 D** 模块内高耦合、模块间低耦合。 ### 6、以下对递归描述错误的是: A、递归程序都可以有非递归编写方法 B、书写简单 C、执行效率高 D、一定要有基例 **正确答案 C** 递归不提高程序执行效率。 任何递归程序都可以通过堆栈或队列变成非递归程序(这是程序的高级应用)。 ### 7、以下关于函数说法错误的是: A、函数可以看做是一段具有名字的子程序 B、函数是一段具有特定功能的、可重用的语句组 C、对函数的使用必须了解其内部实现原理 D、函数通过函数名来调用 **正确答案 C** 调用函数不需要知道函数内部实现原理,只需要知道调用方法(即接口)即可。 ### 8、哪个选项对于函数的定义是错误的? A、def vfunc(a,*b): B、def vfunc(a,b): C、def vfunc(*a,b): D、def vfunc(a,b=2): **正确答案 C** def vfunc(*a, b) 是错误的定义:*a表示可变参数,可变参数只能放在函数参数的最后。 ### 9、关于return语句,以下选项描述正确的是: A、函数中最多只有一个return语句 B、函数必须有一个return语句 C、return只能返回一个值 D、函数可以没有return语句 **正确答案 D** 函数可以包含0个或多个return语句 ### 10、以下关于递归函数基例的说法错误的是: A、递归函数必须有基例 B、递归函数的基例不再进行递归 C、递归函数的基例决定递归的深度 D、每个递归函数都只能有一个基例 **正确答案 D** 每个递归函数至少存在一个基例,但可能存在多个基例。 ### 随机密码生成 补充编程模板中代码,完成如下功能: 以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。 产生密码采用random.randint()函数。 输入输出示例 输入 输出 示例 1 3 634 524 926 【我的答案】 ```python #请在...补充代码 import random def genpwd(length): return random.randint(0,10**(length)-1)+10**(length-1) length = eval(input()) random.seed(17) for i in range(3): print(genpwd(length)) ``` 【参考代码】 ```python 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 【我的答案】 ```python # 请在...补充一行或多行代码 def prime(m): flag = 0 for i in range(2,m): if m % i == 0: flag = 1 break return flag n = eval(input()) a = int(n) #强制转换为整数 a = a + 1 if a < n else a #输出一个比n本身要大的整数, #切记前面的a = a + 1不要写成a += 1,输出会不对的 count = 5 #用于成功输出一个符合要求的质数的计数器 t = "" while count > 0: if prime(a) == 0: t += "{},".format(str(a)) count -= 1 #只有是质数方可减一 a += 1 #无论是否是质数均加一 print(t[:-1]) ``` 【参考代码】 ```python 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 # 这个代码注意: (1) 需要对输入小数情况进行判断,获取超过该输入的最小整数(这里没用floor()函数); (2) 对输出格式进行判断,最后一个输出后不增加逗号(这里没用.join()方法)。 ```
点赞
0
打赏
暂时没有评论
请
登录
后评论
暂时没有评论