第五次作业

七段数码管绘制系统时间(年,月,日,小时)

代码

import datetime  # 引入时间库
import random
import turtle  # 引入海龟库


def drawLine(draw):  # 绘制单段数码管
    turtle.pendown() if draw else turtle.penup()  # 传入True放下画笔,为False 抬起画笔
    turtle.fd(40)  # 向水平方向移动40个像素
    turtle.right(90)  # 方向向右旋转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)  # 第四段不用右转,再左转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)  # 绘制完一个数码管后,左转180度
    turtle.penup()  # 将画笔抬起来
    turtle.fd(20)  # 向右移动20以便绘制第二个数码管


def drawDate(date):  # 获得要输出的数字
    for i in date:  # 遍历日期中的数字
        r = random.random()
        g = random.random()
        b = random.random()
        turtle.pencolor(r, g, b)
        drawDigit(eval(i))  # 通过评估函数,将i评估为数字


if __name__ == '__main__':
    turtle.hideturtle()  # 隐藏画笔
    turtle.setup(800, 350, 200, 200)  # 初始化画布大小,长800像素,宽350像素,窗口左上角距离屏幕左上角各200像素
    turtle.penup()  # 抬起画笔
    turtle.fd(-300)  # 初始时画笔在屏幕中心,将画笔向左移动300像素来方便绘制
    turtle.pensize(5)  # 设置画笔的宽度为5像素
    drawDate(datetime.datetime.now().strftime('%Y%m%d%H'))  # 通过库datetime的datetime.now()的strftime方法来格式化输出时间
    # %Y为年,%m为月,%d为日,%H为小时,来获取当前时间的年月日小时的格式化输入
    turtle.done()  # 结束画图命令,保留画图窗口

画图思路:

运行结果:

posted @ 2021-10-24 09:50  里列昂遗失的记事本  阅读(45)  评论(0编辑  收藏  举报