分析
首先引入turtle库,引入random库(用到绘画与随机)
然后我们画出一个数码管,一共有七条线
(这是我百度到的图解,更方便理解)
先完成一条线,然后通过调整线去完成一串数字,最后获取当前的时间并显示
前下左上上右下
drawdigit定义为一个0-9的数字,然后列第一条横除了0,1,7不需要,其他都需要,然后输出出来。
import random
import turtle as guan
import time
def drawGap(): #设置数码管间隔(俗称提笔)
guan.penup()
guan.fd(5)
def drawLine(draw): #绘制单段数码管
guan.pencolor(random.random(),random.random(),random.random())
drawGap()
guan.pendown() if draw else guan.penup()#如果画了放下画笔,不然就提笔
guan.fd(40)
drawGap()
guan.right(90)
def drawDight(dight): #根据数字绘制七段数码管
guan.pencolor(random.random(),random.random(),random.random())
drawLine(True) if dight in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 1, 3, 4, 5, 6, 7, 8 ,9] else drawLine(False)
drawLine(True) if dight in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 2, 6, 8] else drawLine(False)
guan.left(90)
drawLine(True) if dight in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if dight in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
guan.left(180)
guan.penup() #为绘制后续数字确定位置
guan.fd(20) #为绘制后续数字确定位置
def drawDate(date): # data为日期,格式为‘%Y-%m=%d+’,获取要输出的数字
guan.pencolor(random.random(),random.random(),random.random())
for i in date:
if i == '-':
guan.write('年', font=("微软雅黑",28, "bold"))
guan.pencolor(random.random(),random.random(),random.random())
guan.fd(40)
elif i == '=':
guan.write('月', font=("微软雅黑", 28, "bold"))
guan.pencolor(random.random(),random.random(),random.random())
guan.fd(40)
elif i == '+':
guan.write('日', font=("微软雅黑",28, "bold"))
guan.pencolor(random.random(),random.random(),random.random())
else:
drawDight(eval(i))#通过eval变成整数(int也差不多行)
def riqi():
guan.setup(800, 350, 200, 200)
guan.penup()
guan.fd(-300)
guan.pensize(5)
drawDate(time.strftime("%Y-%m=%d+", time.gmtime()))#当前日期获取
guan.hideturtle()
guan.done()
riqi()
结果: