import turtle,time

def drawGap(): #定义一个空行函数
    turtle.penup()
    turtle.forward(6)

def drawLine(draw): #定义数码管一个管的绘制函数
    drawGap()
    if draw:
        turtle.pendown()
    else:
        turtle.penup()
    turtle.forward(60)
    drawGap()
    turtle.right(90)

def drawDigit(digit): #定义一个数字的绘制函数,if-else使用了两种方法。
    #七段数码管第一段管
    if digit in [2,3,4,5,6,8,9]:
        drawLine(True)
    else:
        drawLine(False)
    #七段数码管第二段管
    if digit in [0,1,3,4,5,6,7,8,9]:
        drawLine(True)
    else:
        drawLine(False)
    #七段数码管第三段管
    if digit in [0,2,3,5,6,8,9]:
        drawLine(True)
    else:
        drawLine(False)
    #七段数码管第四段管
    if digit in [0,2,6,8]:
        drawLine(True)
    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.forward(30)

def drawDate(date): #定义绘制函数,通过格式化时间,简化年月日汉子的输出。
    for i in date:
        turtle.pencolor("red")
        turtle.speed(9)
        if i=="-":
            turtle.pencolor("blue")
            turtle.write("年",font=("Arial",22,"normal"))
            turtle.forward(40)
        elif i=="=":
            turtle.pencolor("green")
            turtle.write("月",font=("Arial",22,"normal"))
            turtle.forward(40)
        elif i == "+":
            turtle.pencolor("yellow")
            turtle.write("日", font=("Arial", 22, "normal"))
        else:

            drawDigit(eval(i))

def main(num): #主函数
    turtle.setup(1000,350,200,200)
    turtle.pensize(6)
    turtle.penup()
    turtle.forward(-450)
    drawDate(num)
    turtle.hideturtle()
    turtle.done()

def getTime(): #定义时间获取函数
    t = time.gmtime()
    tt=time.strftime("%Y-%m=%d+", t)
    return tt

num=getTime()
main(num)

输出:

继续优化上面的代码,减少复杂的地方,将显示当前的时间范围扩大到时分秒,而且是本地时间,代码如下:

import turtle
import time

def drawGap(): #设置一个画笔抬起,使得每段管之间产生间隔
    turtle.penup()
    turtle.forward(5)

def drawLine(draw):
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.forward(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.forward(20)

def drawDate(date):
    for i in date:
        turtle.pencolor("red")
        turtle.speed(10)
        if i=="-":
            turtle.write("年",font=("Arial",30,"normal"))
            turtle.forward(40)
        elif i=="=":
            turtle.write("月",font=("Arial",30,"normal"))
            turtle.forward(40)
        elif i == "+":
            turtle.write("日", font=("Arial", 30, "normal"))
        elif i == "!":
            turtle.penup()
            turtle.forward(100)
        elif i == "@":
            turtle.write("时", font=("Arial", 30, "normal"))
            turtle.forward(40)
        elif i == "#":
            turtle.write("分", font=("Arial", 30, "normal"))
            turtle.forward(40)
        elif i == "¥":
            turtle.write("秒", font=("Arial", 30, "normal"))
        else:
            drawDigit(eval(i))

def main(num):
    turtle.setup(1400,300,200,200)
    turtle.pensize(5)
    turtle.penup()
    turtle.forward(-650)
    drawDate(num)
    turtle.hideturtle()
    turtle.done()

def getTime():
    t = time.localtime() #获取本地时间
    tt=time.strftime("%Y-%m=%d!%H@%M#%S¥", t) #格式化本地时间输出
    return tt

num=getTime()
main(num)

 输出:

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐