练习5: 函数和代码复用 (第5周)
实例7:七段数码管绘制
描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
七段数码管是一种展示数字的有效方式。
请用程序绘制当前系统时间对应的七段数码管,效果如下:
要求如下:
(1) 使用 time 库获得系统当前时间,格式如下:20190411
(2) 绘制对应的七段数码管
(3) 数码管风格不限
请在本机编写代码完成实例,建议有趣的风格请在Python123的绘图专区上传展示。
import turtle as t import time def draw(f): t.fd(5) t.pendown() if f else t.penup() t.fd(40) t.penup() t.fd(5) t.right(90) def drawnum(n): draw(1) if n in [2,3,4,5,6,8,9] else draw(0) draw(1) if n in [0,1,3,4,5,6,7,8,9] else draw(0) draw(1) if n in [0,2,3,5,6,8,9] else draw(0) draw(1) if n in [0,2,6,8] else draw(0) t.left(90) draw(1) if n in [0,4,5,6,8,9] else draw(0) draw(1) if n in [0,2,3,5,6,7,8,9] else draw(0) draw(1) if n in [0,1,2,3,4,7,8,9] else draw(0) t.left(180) t.fd(20) def drawdate(date): for i in date: if i in ['年','月','日']: t.write(i,font=('arial',18,'normal')) t.fd(40) else: drawnum(eval(i)) def main(): t.setup(800,350,200,200) t.penup() t.fd(-350) t.pensize(5) drawdate(time.strftime('%Y年%m月%d日',time.gmtime())) t.hideturtle() t.done() main()
实例8:科赫雪花小包裹
描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
科赫曲线,也叫雪花曲线。绘制科赫曲线。
请补充编程模板中代码,完成功能:获得用户输入的整数N,作为阶,绘制N阶科赫曲线。
# 请在...补充一行或多行代码 import turtle def koch(size, n): if n==0: turtle.fd(size) else: for i in [0,60,-120,60]: turtle.left(i) koch(size/3,n-1) def main(level): turtle.setup(600,600) turtle.penup() turtle.goto(-200, 100) turtle.pendown() turtle.pensize(2) for i in range(0,3): koch(400,level) turtle.right(120) turtle.hideturtle() try: level = eval(input("请输入科赫曲线的阶: ")) main(level) except: print("输入错误")
任意累积
描述
请根据编程模板补充代码,计算任意个输入数字的乘积。
注意,仅需要在标注...的地方补充一行或多行代码。
输入输出示例
| 输入 | 输出 | |
| 示例 1 |
|
|
# 请在...补充一行或多行代码 def cmul(a,*b): for i in b: a*=i return a print(eval("cmul({})".format(input()))) #方法2 def cmul(num): s=num.split(',') n=1 for i in s: n*=eval(i) return n print(cmul(input()))
斐波那契数列计算
描述
根据编程模板补充代码,计算斐波那契数列的值,具体功能如下:
1. 获取用户输入整数N,其中,N为正整数
2. 计算斐波那契数列的值
如果将斐波那契数列表示为fbi(N),对于整数N,值如下:
fbi(1)和fbi(2)的值是1,当N>2时,fbi(N) = fbi(N-1) + fbi(N-2)
请采用递归方式编写。
输入输出示例
| 输入 | 输出 | |
| 示例 1 |
|
|
# 请在...补充一行或多行代码 def fbi(n): if n==1 or n==2: return 1 else: return fbi(n-1)+fbi(n-2) 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 |
|
|
# 请在...补充一行或多行代码 steps = 0 def hanoi(src, des, mid, n): global steps if n == 1: steps+=1 print("[STEP{:>4}] {}->{}".format(steps, src, des)) else: 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)
浙公网安备 33010602011771号