Python慕课之函数和代码复用
单项选择题
1.以下选项不是函数作用的是:
复用代码
提高代码执行速度
增强代码可读性
降低编程复杂度
2下列程序的输出结果为:
def f(a,b): a=4 return a+b def main(): a=5 b=6 print(f(a,b),a+b) main()
10 10
11 11
10 11
11 10
3.以下关于Python函数说法错误的是:
def func(a,b): c=a**2+b b=a return c a=10 b=100 c=func(a,b)+a
执行该函数后,变量c的值为200
该函数名称为func
执行该函数后,变量b的值为100
执行该函数后,变量a的值为10
4 以下关于函数调用描述正确的是:
自定义函数调用前必须定义
Python内置函数调用前需要引用相应的库
函数在调用前不需要定义,拿来即用就好
函数和调用只能发生在同一个文件中
5.以下关于模块化设计描述错误的是:
应尽可能合理划分功能块,功能块内部耦合度高
应尽可能合理划分功能块,功能块内部耦合度低
模块间关系尽可能简单,模块之间耦合度低
高耦合度的特点是复用较为困难
6.以下对递归描述错误的是:
执行效率高
书写简单
递归程序都可以有非递归编写方法
一定要有基例
7.以下关于函数说法错误的是:
对函数的使用必须了解其内部实现原理
函数可以看做是一段具有名字的子程序
函数通过函数名来调用
函数是一段具有特定功能的、可重用的语句组
8.哪个选项对于函数的定义是错误的?
def vfunc(*a,b):
def vfunc(a,b=2):
def vfunc(a,b):
def vfunc(a,*b):
9.关于return语句,以下选项描述正确的是:
return只能返回一个值
函数必须有一个return语句
函数可以没有return语句
函数中最多只有一个return语句
10以下关于递归函数基例的说法错误的是:
递归函数必须有基例
递归函数的基例决定递归的深度
递归函数的基例不再进行递归
每个递归函数都只能有一个基例
编程题
随机密码生成
描述
补充编程模板中代码,完成如下功能:
以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。
产生密码采用random.randint()函数。
输入输出示例
输入 3 输出:634 524 926
#请在...补充代码 import random def genpwd(length): ... 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): ... n = eval(input()) ...
七段数码管
七段数码管是一种展示数字的有效方式。
请用程序绘制当前系统时间对应的七段数码管,效果如下:
![]()
要求如下:
(1) 使用 time 库获得系统当前时间,格式如下:20190411
(2) 绘制对应的七段数码管
(3) 数码管风格不限
请在本机编写代码完成实例,建议有趣的风格请在Python123的绘图专区上传展示。
实例8:科赫雪花小包裹
描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
科赫曲线,也叫雪花曲线。绘制科赫曲线。
请补充编程模板中代码,完成功能:获得用户输入的整数N,作为阶,绘制N阶科赫曲线。
# 请在...补充一行或多行代码 import turtle def koch(size, n): ... def main(level): turtle.setup(600,600) turtle.penup() turtle.goto(-200, 100) turtle.pendown() turtle.pensize(2) ... try: level = eval(input("请输入科赫曲线的阶: ")) main(level) except: print("输入错误")
任意累积
描述
请根据编程模板补充代码,计算任意个输入数字的乘积。
注意,仅需要在标注...的地方补充一行或多行代码。
def cmul(...): ... print(eval("cmul({})".format(input())))
输入输出示例
输入 输出 示例 1 1,2,3,4 24
斐波那契数列计算
描述
根据编程模板补充代码,计算斐波那契数列的值,具体功能如下:
1. 获取用户输入整数N,其中,N为正整数
2. 计算斐波那契数列的值
如果将斐波那契数列表示为fbi(N),对于整数N,值如下:
fbi(1)和fbi(2)的值是1,当N>2时,fbi(N) = fbi(N-1) + fbi(N-2)
请采用递归方式编写。
# 请在...补充一行或多行代码 def fbi(n): .... n = eval(input()) print(fbi(n))
汉诺塔问题
描述
汉诺塔问题大家都清楚,这里不再赘述。
请补充编程模板中代码,完成如下功能:
有三个圆柱A、B、C,初始时A上有N个圆盘,N由用户输入给出,最终移动到圆柱C上。
每次移动步骤的表达方式示例如下:[STEP 10] A->C。其中,STEP是步骤序号,宽度为4个字符,右对齐。
请编写代码,获得输入N后,输出汉诺塔移动的步骤。
输入格式:一个整数
输出格式:每个步骤一行,每行参考格式如下:[STEP 10] A->C
输入输出示例
输入 输出 示例 1 3 [STEP 1] A->C [STEP 2] A->B [STEP 3] C->B [STEP 4] A->C [STEP 5] B->A [STEP 6] B->C [STEP 7] A->C
代码模板:
# 请在...补充一行或多行代码 steps = 0 def hanoi(src, des, mid, n): global steps if n == 1: ... print("[STEP{:>4}] {}->{}".format(steps, src, des)) else: ... N = eval(input()) hanoi("A", "C", "B", N)