import turtle #导入turtle库
想要绘制整个数字我们首先要能绘制一条线段,下面这个函数就是对一条线段进行绘制
def drawline(draw):
drawgap() #每个线段之间的间隔
turtle.pendown() if draw else turtle.penup()
turtle.fd(40) #每条线段长度为40
drawgap()
turtle.right(90) #每条线段画完毕就向右转,准备画下一步
通过分析可以发现每个数字都是由7段小线条构造而成,我们就选取上图的方向开始作画,所有数字都从1开始出发,不同的数字需要显示的线段是不同的,比如说2,它就需要6-7-1-4-3,其他数字同理。我们可以写一个根据数字画出不同位置的线段的函数,如果某个数字需要这条线段就在画布上画出它。否者就把画笔抬起跳过它。
def drawdigit(digit): #根据数字绘画线段
drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False)#如果传入的数字与括号中的数字相匹配,就执行画画,否者就执行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) # 当执行完第四段,此时画笔朝向右,需要向左转90度才能继续执行第5段
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:
drawdigit(eval(i)) #通过eval()函数将数字变为整数
def main(): #画布和画笔的基本设置
turtle.pencolor('red') #画笔的颜色
turtle.setup(800,300,200,200) #设置窗口大小和位置
turtle.penup()
turtle.fd(-300)
turtle.pensize(6) #设置画笔宽度
drawdate('2020730')
turtle.hideturtle() #画图完毕后隐藏画笔
turtle.done() #绘画完毕后保留画图窗口,否者窗口会自动消失
三.源代码
import turtle
def drawgap():
turtle.penup()
turtle.fd(6)
def drawline(draw):
drawgap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawgap()
turtle.right(90)
def drawdigit(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:
drawdigit(eval(i))
def main():
turtle.pencolor('red')
turtle.setup(800,400,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(6)
drawdate('2020730')
turtle.hideturtle()
turtle.done()
main()