【python】一个简单的数码管显示代码

发布于 2022-05-25  788 次阅读


内容纲要

Python七数码

效果图在最后,注释很详细。

# 改进版的七数码
from datetime import *
from turtle import *

def draw_gap():
    up()
    fd(5)

def drawline(draw):  # 落笔划一横然后拐弯
    # pd() if draw else up()  # 难以理解
    # draw = 1   下面是正解
    draw_gap()
    if draw:
        pd()
    else:
        up()
    fd(40)
    draw_gap()
    right(90)  # done()

def draw_seven(num):  # 根据需要绘制的数字落笔
    # 画 下 第一笔 右横
    if num in [2, 3, 4, 5, 6, 8, 9]:
        drawline(1)
    else:
        drawline(0)
    # 画 下 第二笔 下竖
    if num in [0, 1, 3, 4, 5, 6, 7, 8, 9]:
        drawline(1)
    else:
        drawline(0)
    # 画 下 第三笔 左横
    if num in [0, 2, 3, 5, 6, 8, 9]:
        drawline(1)
    else:
        drawline(0)
    # 画 下 第四笔 上竖
    if num in [0, 2, 6, 8]:
        drawline(1)
    else:
        drawline(0)
    left(90)  # 画完最后一笔 笔向右转了一下,回转一下,让笔指向正上
    # 画 上 第一笔 上竖
    if num in [0, 4, 5, 6, 8, 9]:
        drawline(1)
    else:
        drawline(0)
    # 画 上 第二笔 右横
    if num in [0, 2, 3, 5, 6, 7, 8, 9]:
        drawline(1)
    else:
        drawline(0)
    # 画 上 第三笔 下竖
    if num in [0, 1, 2, 3, 4, 7, 8, 9]:
        drawline(1)
    else:
        drawline(0)

    left(180)  # 画完一个数字后,笔尖向右
    up()  # 起笔
    fd(20)  # 向右移动一点,数字与数字拉开间隔

def draw_date(data):  # 获得要输出的数字
    pencolor("red")
    for i in data:
        if i == 'a':
            write('年', font=("Arial", 18, "normal"))
            fd(45)
        elif i == 'b':
            write('月', font=("Arial", 18, "normal"))
            fd(45)
        elif i == 'c':
            write('日', font=("Arial", 18, "normal"))
            fd(45)
        elif i == 'd':
            write('时', font=("Arial", 18, "normal"))
            fd(45)
        elif i == 'e':
            write('分', font=("Arial", 18, "normal"))
            fd(45)
        elif i == 'f':
            write('秒', font=("Arial", 18, "normal"))
            fd(-1050)
            right(90)
            fd(150)
            write('慕鸢在上课的时候泡茶喝', font=("Arial", 18, "normal"))
        else:
            draw_seven(eval(i))  # 遍历输入的字符串 转化为一个一个的数字

def main():
    setup(1500, 400, 100, 100)
    up()
    speed(10)
    fd(-600)
    pensize(5)
    draw_date(datetime.now().strftime('%ya%mb%dc%Hd%Me%Sf'))
    # draw_date('20210926')
    hideturtle()
    done()

main()


作者是超帅的小哥哥