首页 > 编程语言 > 详细

【Python】七段数码管绘制问题

时间:2020-02-17 19:59:52      阅读:80      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

问题分析:

 技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

 技术分享图片

 

 绘制路径:

技术分享图片

代码:

import turtle #引入绘图库turtle
def drawLine(draw):   #绘制单段数码管
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40) #前进40像素
    turtle.right(90)#旋转90度,完成一条线的绘制
def drawDight(dight):#根据数字绘制七段数码管
    drawLine(True) if dight in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if dight in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if dight in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup() #为绘制后续数字确定位置
    turtle.fd(20) #为绘制后续数字确定位置
def drawDate (date):#获得要输出的数字
    for i in date:
        drawDight(eval(i))  #通过eval()函数家将数字转化为整数
        
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(20200217)
    turtle.hideturtle()
    turtle.done()
main()

结果:

 技术分享图片

 

 实现数码管效果

import turtle #引入绘图库turtle
def drawGap():#绘制数码管间隔,实现数码管效果
    turtle.penup()
    turtle.fd(5)
def drawLine(draw):   #绘制单段数码管
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40) #前进40像素
    drawGap()
    turtle.right(90)#旋转90度,完成一条线的绘制
def drawDight(dight):#根据数字绘制七段数码管
    drawLine(True) if dight in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if dight in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if dight in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup() #为绘制后续数字确定位置
    turtle.fd(20) #为绘制后续数字确定位置
def drawDate (date):#获得要输出的数字
    for i in date:
        drawDight(eval(i))  #通过eval()函数家将数字转化为整数
        
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(20200217)
    turtle.hideturtle()
    turtle.done()
main()

技术分享图片

 

 技术分享图片

 

 

import turtle,time #引入绘图库turtle time库
def drawGap():#绘制数码管间隔,实现数码管效果
    turtle.penup()
    turtle.fd(5)
def drawLine(draw):   #绘制单段数码管
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40) #前进40像素
    drawGap()
    turtle.right(90)#旋转90度,完成一条线的绘制
def drawDight(dight):#根据数字绘制七段数码管
    drawLine(True) if dight in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if dight in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if dight in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if dight in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup() #为绘制后续数字确定位置
    turtle.fd(20) #为绘制后续数字确定位置
def drawDate (date):#data为日期,格式为“%Y-%m=%d+”
    turtle.pencolor("red")
    for i in date:
       if i==-:
           turtle.write(,font=("Arial",18,"normal"))
           turtle.pencolor("green")
           turtle.fd(40)
       elif i===:
           turtle.write(,font=("Arial",18,"normal"))
           turtle.pencolor("blue")
           turtle.fd(40)
       elif i==+:
           turtle.write(,font=("Arial",18,"normal"))
       else:
           drawDight(eval(i))

def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(time.strftime(%Y-%m=%d+,time.gmtime()))#获取系统时间并格式化
    turtle.hideturtle()
    turtle.done()
main()

技术分享图片

 

【Python】七段数码管绘制问题

原文:https://www.cnblogs.com/HGNET/p/12322903.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!