七段数码管绘制

人盡茶涼 提交于 2019-12-02 06:32:40

七段数码管绘制

一 七段数码管绘制问题分析

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()
 
得到的结果为
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!