七段数码管绘制
一 七段数码管绘制问题分析
1.1 问题分析
七段数码管
-
需求:用程序绘制七段数码管
turtle绘图体系--->七段数码管绘制
1.2 七段数码管绘制时间
二 七段数码管绘制实力讲解
2.1 基本思路
-
步骤一:绘制单个数字对应的数码管
-
步骤二:获得一串数字,绘制对应的数码管
-
步骤三:获得当前系统时间,绘制对应的数码管
2.2 步骤1
步骤1:绘制单个数码管
-
七段数码管由七个基本线条组成
-
七段数码管可以有固定顺序
-
不同数字显示不同的线条
2.3 步骤2
步骤2:获取一段数字,绘制多个数码管
三 七段数码管绘制实例讲解下
3.1 绘制漂亮的七段数码管
-
增加漂亮的七段数码管
3.2 步骤3
步骤3:获取当前系统时间,绘制对应的数码管
-
使用time库获得系统当前时间
-
增加年月日标记
-
年月日颜色不同
代码演示
填写数字(代码中自己随意更改,然后根据填写的)画出来
import turtle
t = turtle.Pen()
t.shape("turtle")
def drawLine(flag):
if flag:
t.down()
else:
t.up()
t.fd(40)
t.right(90)
def drawDight(num):
drawLine(True) if num in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 2, 6, 8] else drawLine(False)
t.left(90)
drawLine(True) if num in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
drawDight(3)
turtle.mainloop()
得到的结果为
画出当前时间 中间对应年月日 并打印出来
# 引用海龟库
import turtle
# 引用时间库
import time
# 定义一个画笔
t = turtle.Pen()
# 定义画笔开头为海龟
t.shape("turtle")
# 最快速度画图
t.speed(0)
# 定义一个函数为drawGap
def drawGap():
# 画笔朝上
t.up()
# 直行5像素
t.fd(5)
# 定义一个函数
def drawLine(flag):
# 调用这个函数
drawGap()
# 判断这个语句
if flag:
# 画笔朝下
t.down()
# 否则
else:
# 画笔朝上
t.up()
# 直行40像素
t.fd(40)
# 调用这个函数
drawGap()
# 右走90像素
t.right(90)
# 定义一个函数为num
def drawDight(num):
# 调用drawLine这个函数,判断是否包含里面的条件,如果包含就是真,就执行上面的函数,如果不包含,就是假,就执行上面函数的不满足条件
drawLine(True) if num in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 2, 6, 8] else drawLine(False)
t.left(90)
drawLine(True) if num in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if num in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
t.up()
t.left(180)
t.fd(20)
# drawDight(3)
# 定义一个函数
def get_data(data):
# 让这个时间循环
for i in data:
# 如果时间格式后面显示/则写一个年字
if i == '/':
t.write('年', font=("Arial", 30, "normal"))
# 写的颜色为绿色
t.pencolor('green')
# 如果时间格式后面显示-,则写一个月字
elif i == "-":
t.write('月', font=("Arial", 30, "normal"))
# 写的颜色为蓝色
t.pencolor('blue')
# 画笔方向朝上
t.up()
# 画笔直行20像素
t.fd(20)
# 画笔方向再朝下
t.down()
# 如果时间格式后面显示+,则写一个日字
elif i == "+":
t.write("日", font=("Arial", 30, "normal"))
else:
# drawDight转换为i值得格式
drawDight(eval(i))
# 定义一个函数
def mian():
# 画笔方向朝上
t.up()
# 后退300个像素
t.backward(300)
# 方向朝下
t.down()
# 设置画笔颜色
t.pencolor('red')
# 设置画笔的型号为5像素
t.pensize(5)
# 得到时间并格式化
get_data(time.strftime('%Y/%m-%d+',time.gmtime()))
# 隐藏画笔的箭头
t.hideturtle()
# 调用这个函数
mian()
# 让运行结果持续显示
turtle.done()
得到的结果为