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()