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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM