七段数码管绘制系统时间(年,月,日,小时)
代码
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() # 结束画图命令,保留画图窗口
画图思路:
运行结果: