效果如下,我们将接触递归思想

关键在于理清画图的流程,如图,我们将数码管各段进行编号,规定起点,这样,无论画哪个数字,就是字符的排列而已,比如1就是7,2或者2就是6,7,1,4,3等等

以下是代码

import turtle as a

#让每一段线之间产生间隔
def Drawgap():
    a.penup()
    a.fd(5)
#参数为真,就画一条线,同时右转90度,方便下次划线,为假就飞过去,雁过不留痕
#划线前和划线后都要产生一次间隔,保证美观
def Drawline(draw):
    Drawgap()
    a.pendown() if draw is True else a.penup()
    a.fd(s)
    Drawgap()
    a.right(90)

#这里我们按照之前的规则设定时候画线,123456789他们的区别仅仅是哪些画实线,哪些画空线
def Drawdigital(number):
    Drawline(True) if number in [2, 3, 4, 5, 6, 8, 9] else Drawline(False)
    Drawline(True) if number in [0, 1, 3, 4, 5, 6, 7, 8, 9] else Drawline(False)
    Drawline(True) if number in [0, 2, 3, 5, 6, 8, 9] else Drawline(False)
    Drawline(True) if number in [0, 2, 6, 8] else Drawline(False)
    a.left(90)
    Drawline(True) if number in [0, 4, 5, 6, 8, 9] else Drawline(False)
    Drawline(True) if number in [0, 2, 3, 5, 6, 7, 8, 9] else Drawline(False)
    Drawline(True) if number in [0, 1, 2,3, 7.8, 9] else Drawline(False)
    a.left(180)
    a.penup()
    a.fd(20)
#设立要画的字符串,遍历一个一个的画
def Drawdate(date):
    for i in date:
        s=eval(i)
        Drawdigital(s)
if __name__ == '__main__':
    a.setup(650, 300, 200, 200)
    a.seth(0)
    a.pensize(5)
    a.pencolor("red")
    a.penup()
    a.fd(-200)
    a.pendown()
    s = 20

    number = eval("0")
    Drawdate("2019")
    a.done()

如果你对turtle理解有困难,可参考
https://blog.csdn.net/qq_37465638/article/details/86674346
专门解释了turtle的相关语法