测验5:函数和代码复⽤(第5周)+练习5:函数和代码复⽤(第5周)
测验5
选择题
1.以下选项不是函数作⽤的是:提⾼代码执⾏速度提⾼代码执⾏速度
2.下列程序的输出结果为:1011
deff(a,b):
a=4
returna+b
defmain():
a=5
b=6
print(f(a,b),a+b)
main()
3.以下关于Python函数说法错误的是:执⾏该函数后,变量c的值为200执⾏该函数后,变量c的值为200
deffunc(a,b):
c=a**2+b
b=a
returnc
a=10
b=100
c=func(a,b)+a
4.以下关于函数调⽤描述正确的是:⾃定义函数调⽤前必须定义
5.以下关于模块化设计描述错误的是:应尽可能合理划分功能块,功能块内部耦合度低
6.以下对递归描述错误的是:执⾏效率⾼
7.以下关于函数说法错误的是:对函数的使⽤必须了解其内部实现原理
8.哪个选项对于函数的定义是错误的?defvfunc(*a,b):defvfunc(*a,b):
9.关于return语句,以下选项描述正确的是:函数可以没有return语句
10.以下关于递归函数基例的说法错误的是:每个递归函数都只能有⼀个基例
随机密码⽣成
描述
补充编程模板中代码,完成如下功能:
以整数17为随机数种⼦,获取⽤户输⼊整数N为长度,产⽣3个长度为N位的密码,密码的每位是⼀个数字。每个密码单独⼀⾏输出。
产⽣密码采⽤t()函数。
importrandom
defgenpwd(length):
a=pow(10,length-1)#定义⼀个下限
b=pow(10,length)-1#定义⼀个上限
return"{}".format(t(a,b))
length=eval(input())
(17)
foriinrange(3):
print(genpwd(length))
连续质数计算
描述
补充编程模板中代码,完成如下功能:
获得⽤户输⼊数字N,计算并输出从N开始的5个质数,单⾏输出,质数间⽤逗号,分割。
注意:需要考虑⽤户输⼊的数字N可能是浮点数,应对输⼊取整数;最后⼀个输出后不⽤逗号。
defprime(m):
end=int(pow(m,0.5)+1)
foriinrange(2,end):
ifm%i==0:
returnFal
el:
returnTrue
n=eval(input())
ifn!=int(n):#因为可能输⼊有浮点数
n=int(n)+1
el:
n=int(n)
count=5
whilecount>0:
ifprime(n):
ifcount>1:
print(n,end=',')
el:
print(n)
count-=1
n+=1
练习5
实例7:七段数码管绘制
要求如下:
(1)使⽤time库获得系统当前时间,格式如下:20190411
(2)绘制对应的七段数码管
(3)数码管风格不限
importturtleast
importtime
defdrawGap():#绘制数码管间隔
()
(5)
defdrawLine(draw):#绘制单段数码管
drawGap()
n()()
(40)
drawGap()
(90)
defdrawDigit(d):#根据数字绘制七段数码管
drawLine(True)ifdin[2,3,4,5,6,8,9]eldrawLine(Fal)
drawLine(True)ifdin[0,1,3,4,5,6,7,8,9]eldrawLine(Fal)
drawLine(True)ifdin[0,2,3,5,6,8,9]eldrawLine(Fal)
drawLine(True)ifdin[0,2,6,8]eldrawLine(Fal)
(90)
drawLine(True)ifdin[0,4,5,6,8,9]eldrawLine(Fal)
drawLine(True)ifdin[0,2,3,5,6,7,8,9]eldrawLine(Fal)
drawLine(True)ifdin[0,1,2,3,4,7,8,9]eldrawLine(Fal)
(180)
()
(20)
defdrawDate(date):
or("red")
foriindate:
drawDigit(eval(i))
defmain():
(800,350,200,200)
()
(-300)
e(5)
drawDate(me('%Y%m%d',()))
()
main()
实例8:科赫雪花⼩包裹
科赫曲线,也叫雪花曲线。绘制科赫曲线。
importturtle
defkoch(size,n):
ifn==0:
(size)
el:
foranglein[0,60,-120,60]:
(angle)
koch(size/3,n-1)
defmain(level):
(600,600)
()
(-200,100)
n()
e(2)
koch(400,level)
(120)
koch(400,level)
(120)
koch(400,level)
rtle()
try:
level=eval(input("请输⼊科赫曲线的阶:"))
main(level)
except:
print("输⼊错误")
任意累积
计算任意个输⼊数字的乘积。
defcmul(a,*b):
m=a
foriinb:
m*=i
returnm
print(eval("cmul({})".format(input())))
斐波那契数列计算
描述
计算斐波那契数列的值,具体功能如下:
1.获取⽤户输⼊整数N,其中,N为正整数
2.计算斐波那契数列的值
如果将斐波那契数列表⽰为fbi(N),对于整数N,值如下:
fbi(1)和fbi(2)的值是1,当N>2时,fbi(N)=fbi(N-1)+fbi(N-2)
采⽤递归⽅式编写。
deffbi(n):
ifn==1orn==2:
return1
el:
returnfbi(n-1)+fbi(n-2)
n=eval(input())
print(fbi(n))
汉诺塔实践
描述
汉诺塔问题⼤家都清楚,这⾥不再赘述。
请补充编程模板中代码,完成如下功能:
有三个圆柱A、B、C,初始时A上有N个圆盘,N由⽤户输⼊给出,最终移动到圆柱C上。
每次移动步骤的表达⽅式⽰例如下:[STEP10]A->C。其中,STEP是步骤序号,宽度为4个字符,右对齐。
请编写代码,获得输⼊N后,输出汉诺塔移动的步骤。
输⼊格式:⼀个整数
输出格式:每个步骤⼀⾏,每⾏参考格式如下:[STEP10]A->C
steps=0
defhanoi(src,des,mid,n):
globalsteps
ifn==1:
steps+=1
print("[STEP{:>4}]{}->{}".format(steps,src,des))
el:
hanoi(src,mid,des,n-1)
steps+=1
print("[STEP{:>4}]{}->{}".format(steps,src,des))
hanoi(mid,des,src,n-1)
N=eval(input())
hanoi("A","C","B",N)
题⽬来源:
中国⼤学MOOC
Python语⾔程序设计(第11期)
本文发布于:2022-12-10 20:48:49,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/81360.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |