用Python绘制的七段数码管来显示数字和字母


利用Python绘制的 七段数码管,实际上是用turtle绘制七段规则排列的直线,通过组合来显示出实际意义上的事物。
嵩天老师留下的课后作业为例:
在这里插入图片描述

  1. 可以显示数字(改进了一下,用input输入)
#SevenDigitsDrawV1.py
import turtle
def drawgap():
    turtle.penup()
    turtle.fd(5)
def drawline(draw):
    drawgap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawgap()
    turtle.right(90)
def drawdigit(digit):
    drawline(True) if digit in ['A','b','d','E','F',2,3,4,5,6,8,9] else drawline(False)
    drawline(True) if digit in ['A','b','d',0,1,3,4,5,6,7,8,9] else drawline(False)
    drawline(True) if digit in [0,'b','d','E','C',2,3,5,6,8,9] else drawline(False)
    drawline(True) if digit in ['A','b','d','E','F','C',0,2,6,8] else drawline(False)
    turtle.left(90)
    drawline(True) if digit in ['A','b','C','E','F',0,4,5,6,8,9] else drawline(False)
    drawline(True) if digit in ['A','C','E','F',0,2,3,5,6,7,8,9] else drawline(False)
    drawline(True) if digit in ['A','d',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:
        drawdigit(eval(i))   
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawdate(a)
    turtle.hideturtle()
    turtle.done()
a= input()
main()
  1. 可以显示字母
#SevenDigitsDrawV2.py
import turtle
def drawgap():
    turtle.penup()
    turtle.fd(5)
def drawline(draw):
    drawgap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawgap()
    turtle.right(90)
def drawdigit(digit):
    drawline(True) if digit in ['A','b','d','E','F',2,3,4,5,6,8,9] else drawline(False)
    drawline(True) if digit in ['A','b','d',0,1,3,4,5,6,7,8,9] else drawline(False)
    drawline(True) if digit in [0,'b','d','E','C',2,3,5,6,8,9] else drawline(False)
    drawline(True) if digit in ['A','b','d','E','F','C',0,2,6,8] else drawline(False)
    turtle.left(90)
    drawline(True) if digit in ['A','b','C','E','F',0,4,5,6,8,9] else drawline(False)
    drawline(True) if digit in ['A','C','E','F',0,2,3,5,6,7,8,9] else drawline(False)
    drawline(True) if digit in ['A','d',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:
        drawdigit(i)    #如果输入的是数字则改为drawdigit(eval(i))
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawdate(a)
    turtle.hideturtle()
    turtle.done()
a= input()
main()
  1. 关于实时时间的显示
#SevenDigitsDrawV3.py
import turtle,time
def drawgap():      #绘制数码管间隔
    turtle.penup()
    turtle.fd(5)
def drawline(draw):     #绘制单段数码管
    drawgap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawgap()
    turtle.right(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)
    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)
    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",24,"normal"))
            turtle.pencolor("green")
            turtle.fd(40)
        elif i == '=':
            turtle.write('月',font=("Arial",24,"normal"))
            turtle.pencolor("blue")
            turtle.fd(40)
        elif i == '+':
            turtle.write('日',font=("Arial",24,"normal"))
        else:
            drawdigit(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()
  1. 关于倒计天数的显示(#2020.5.4到现在,修改自CSDN:一只小菜ji
#SevenDigitsDrawV4倒计时.py
import turtle as t
import time ,datetime

def drawgap():      #绘制数码管间隔
    t.penup()
    t.fd(5)
def drawline(draw):     #绘制单段数码管
    drawgap()
    t.pendown() if draw else t.penup()
    t.fd(40)
    drawgap()
    t.right(90)
def drawdigit(digit):       #根据数字绘制七段数码管
    t.write('剩余时间:', font=("Timesnewromans",24,"normal"))
    t.pencolor("red")
    t.fd(150)
    i=0
    while i < len(digit):
        if digit[i] >= '0' and digit[i] <= '9':
            digit1 = eval(digit[i])
            drawline(True) if digit1 in [2,3,4,5,6,8,9] else drawline(False)
            drawline(True) if digit1 in [0,1,3,4,5,6,7,8,9] else drawline(False)
            drawline(True) if digit1 in [0,2,3,5,6,8,9] else drawline(False)
            drawline(True) if digit1 in [0,2,6,8] else drawline(False)
            t.left(90)
            drawline(True) if digit1 in [0,4,5,6,8,9] else drawline(False)
            drawline(True) if digit1 in [0,2,3,5,6,7,8,9] else drawline(False)
            drawline(True) if digit1 in [0,1,2,3,4,7,8,9] else drawline(False)
            t.left(180)
            t.penup()
            t.fd(20)
        else:
            break
        i=i+1

def main():
    t.setup(800,350,200,200)
    t.penup()
    t.fd(-300)
    t.pensize(5)
    remain = datetime.datetime(2020,5,1) -datetime.datetime.now()
    s = str(remain)
    drawdigit(s)
    t.hideturtle()
    t.done()
main()

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐