python实现七段数码管显示
python实现七段数码管显示

运行原理:如图所示,七段数码管由七个线条组成,可以有固定顺序(1--7),不同数字显示不同的线条
1)绘制单个数字
def drawline(draw):#绘制单段数码管函数
turtle.pendown()if draw else turtle.penup()#如果有就落笔,没有就抬笔
turtle.fd(40)#绘制
turtle.right(90)#顺时针转90度继续
def drawdigit(digit):#根据数字绘制七段数码管
drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False)#判断第1段数码管(如果数字为2345689则需要绘制第一笔)
drawline(True) if digit in [0,1,3,4,5,6,7,8,9] else drawline(False)#判断第2段数码管
drawline(True) if digit in [0,2,3,5,6,8,9] else drawline(False)#判断第3段数码管
drawline(True) if digit in [0,2,6,8] else drawline(False)#判断第4段数码管
turtle.left(90)#走完1234段数码管,到第5段时需直走,在原来right90的基础上恢复过来就left90
drawline(True) if digit in [0,4,5,6,8,9] else drawline(False)#判断第5段数码管(如果数字为045689则需要绘制第一笔)
drawline(True) if digit in [0,2,3,5,6,7,8,9] else drawline(False)#判断第6段数码管
drawline(True) if digit in [0,1,2,3,4,7,8,9] else drawline(False)#判断第7段数码管
2)绘制多个(如:获得当前系统时间)
#七段数码管绘制(时间)
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)#顺时针转90度继续
def drawdigit(digit):#根据数字绘制七段数码管
drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False)#判断第1段数码管(如果数字为2345689则需要绘制第一笔)
drawline(True) if digit in [0,1,3,4,5,6,7,8,9] else drawline(False)#判断第2段数码管
drawline(True) if digit in [0,2,3,5,6,8,9] else drawline(False)#判断第3段数码管
drawline(True) if digit in [0,2,6,8] else drawline(False)#判断第4段数码管
turtle.left(90)#走完1234段数码管,到第5段时需直走,在原来right90的基础上恢复过来就left90
drawline(True) if digit in [0,4,5,6,8,9] else drawline(False)#判断第5段数码管(如果数字为045689则需要绘制第一笔)
drawline(True) if digit in [0,2,3,5,6,7,8,9] else drawline(False)#判断第6段数码管
drawline(True) if digit in [0,1,2,3,4,7,8,9] else drawline(False)#判断第7段数码管
turtle.left(180)#调整方向,让下一个绘制回归原点
turtle.penup()#抬笔
turtle.fd(20)#前进20,为后续数字确定位置
def drawdate(date):#日期处理,格式为‘%y+%m-%d=’
for i in date:
if i=='+':
turtle.write('年',font=("Arial",25,"normal"))
turtle.fd(40)
elif i=='-':
turtle.write('月',font=("Arial",25,"normal"))
turtle.fd(40)
elif i=='=':
turtle.write('日',font=("Arial",25,"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()
3)实现倒计时(10秒)
import turtle
def drawline(draw):
turtle.pendown()if draw else turtle.penup()
turtle.fd(40)
turtle.right(90)
def drawdigit(digit):
i=0
while i<len(digit):
if digit[i]>='0'and digit[i]<='9':
drawline(True) if eval(digit[i]) in [2,3,4,5,6,8,9] else drawline(False)
drawline(True) if eval(digit[i]) in[0,1,3,4,5,6,7,8,9] else drawline(False)
drawline(True) if eval(digit[i]) in [0,2,3,5,6,8,9] else drawline(False)
drawline(True) if eval(digit[i]) in [0,2,6,8] else drawline(False)
turtle.left(90)
drawline(True) if eval(digit[i]) in [0,4,5,6,8,9] else drawline(False)
drawline(True) if eval(digit[i]) in [0,2,3,5,6,7,8,9] else drawline(False)
drawline(True) if eval(digit[i]) in [0,1,2,3,4,7,8,9] else drawline(False)
turtle.clear()#清屏
turtle.left(180)
turtle.penup()
turtle.fd(-40)#复位
else:
break
i=i+1
def main():
turtle.setup(800,350,200,200)
turtle.pensize(5)
drawdigit('9876543210')
turtle.hideturtle()
turtle.done()
main()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)