这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
七段数码管是一种展示数字的有效方式。
请用程序绘制当前系统时间对应的七段数码管,效果如下:
要求如下:
(1) 使用 time 库获得系统当前时间,格式如下:20190411
(2) 绘制对应的七段数码管
(3) 数码管风格不限
请在本机编写代码完成实例,建议有趣的风格请在Python123的绘图专区上传展示。
import turtle,time
t = time.gmtime()
k = time.strftime("%Y,%m,%d",t)
year = k[0:4]
month = k[5:7]
day = k[8:10]
q = str(year)+str(month)+str(day)
def drawLine(draw): #绘制单段数码管
if draw:
turtle.pendown()
else:
turtle.penup()
turtle.fd(40)
turtle.right(90)
def drawDight(digit):#根据数字绘制七段数码管
drawLine(True) if digit in[2,3,4,5,6,8,9]else drawLine(False)
drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0,4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 7,8, 9] else drawLine(False)
drawLine(True) if digit in [0,1, 2,3,4, 7, 8,9] else drawLine(False)
turtle.left(180)
turtle.penup()#为绘制后续数字确定位置
turtle.fd(20)#为绘制后续数字确定位置
def drawDate(date):
for i in date:
drawDight(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate(q)
turtle.hideturtle()
turtle.done()
main()
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
科赫曲线,也叫雪花曲线。绘制科赫曲线。
请补充编程模板中代码,完成功能:获得用户输入的整数N,作为阶,绘制N阶科赫曲线。
import turtle
def koch(size, n):
if n==0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
turtle.left(angle)
koch(size/3,n-1)def main(level):
turtle.setup(600, 600)
turtle.penup()
turtle.goto(-200, 100)
turtle.pendown()
turtle.pensize(2)
koch(300,level)
turtle.hideturtle()
turtle.done()
try:
level = eval(input("请输入科赫曲线的阶: "))
main(level)
except:
print("输入错误")
请根据编程模板补充代码,计算任意个输入数字的乘积。
注意,仅需要在标注...的地方补充一行或多行代码。
def cmul(a,*t):
m = a
for i in t:
m*=i
return m
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)
请采用递归方式编写。
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后,输出汉诺塔移动的步骤。
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)
hanoi(src,des,mid,1)
hanoi(mid,des,src,n-1)N = eval(input())
hanoi("A", "C", "B", N)