python 七段數碼管 實現顯示當前時間

2021-10-02 12:53:25 字數 4118 閱讀 2622

所謂七段數碼管,即如下圖示

draw_gap() #每次繪製一小段後,留乙個空隙,比較美觀

turtle.pendown() if draw else turtle.penup()

turtle.fd(40)

turtle.right(90)

def draw_gap():

turtle.up()

turtle.fd(5)

但是,並不是每乙個數字都需要這七段,因此我們可以通過《表示式1> if 《條件》 else 《表示式2>函式來遍歷選擇。

def draw_choice(i):

drawline(true) if i in [2, 3, 4, 5, 6, 8, 9] else drawline(false) #2,3,4,5,6,8,9均需要g段,所以呼叫上面的drawling函式,繪製線段

drawline(true) if i in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawline(false)

drawline(true) if i in [0, 2, 3, 5, 6, 8] else drawline(false)

drawline(true) if i in [0, 2, 6, 8] else drawline(false)

turtle.left(90) #繪製完e段後,使海龜左轉90段,使其繪製剩餘的f段、a段、b段。

drawline(true) if i in [0, 4, 5, 6, 8, 9] else drawline(false)

drawline(true) if i in [0, 2, 3, 5, 7, 8, 9] else drawline(false)

drawline(true) if i in [0, 1, 2, 3, 4, 7, 8, 9] else drawline(false)

turtle.left(180) #繪製完b段後,使海龜左轉或右轉180度,回到原始方向,以便繪製下乙個數字。

turtle.up() #抬起畫筆

turtle.fd(20) #前進20個畫素,到達繪製下乙個數字的位置

為了更加美觀,我們在時間的後面分別加上時、分、秒

def draw_date(date):    #date為日期,格式為"%y-%m=%d+"

for i in (date):

if i == "-":

turtle.pencolor("red")

turtle.write("點",move=false,font=('arial',18,'normal'))

turtle.up()

turtle.fd(40)

elif i == "=":

turtle.pencolor("blue")

turtle.write("分", move=false, font=('arial',18, 'normal'))

turtle.penup()

turtle.fd(40)

elif i == "+":

turtle.color("green")

turtle.write("秒", move=false, font=('arial',18, 'normal'))

turtle.penup()

turtle.fd(40)

else:

draw_choice(eval(i)) #如未遍歷到上述符號,則繪製數字

畫線段函式,怎麼畫的函式都準備好了,接下來就是任務是獲取當前時間,從而利用上面兩個函式,繪製出當前時間

def main():

turtle.setup(800,350,200,200) #設定視窗

turtle.penup()

turtle.bk(300)

turtle.pensize(5)

draw_date(time.strftime("%h-%m=%s+",time.localtime())) #獲取本地時間,轉化為%h-%m=%s+格式

turtle.hideturtle() #隱藏海龜

turtle.done() #繪製完畢後,使視窗停留

main() #呼叫main()函式

完整**如下:

import turtle

import time

def draw_gap():

turtle.up()

turtle.fd(5)

def drawline(draw):

draw_gap()

turtle.pendown() if draw else turtle.penup()

turtle.fd(40)

turtle.right(90)

def draw_choice(i):

drawline(true) if i in [2, 3, 4, 5, 6, 8, 9] else drawline(false)

drawline(true) if i in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawline(false)

drawline(true) if i in [0, 2, 3, 5, 6, 8] else drawline(false)

drawline(true) if i in [0, 2, 6, 8] else drawline(false)

turtle.left(90)

drawline(true) if i in [0, 4, 5, 6, 8, 9] else drawline(false)

drawline(true) if i in [0, 2, 3, 5, 7, 8, 9] else drawline(false)

drawline(true) if i in [0, 1, 2, 3, 4, 7, 8, 9] else drawline(false)

turtle.left(180)

turtle.up()

turtle.fd(20)

def draw_date(date): #date為日期,格式為"%y-%m=%d+"

for i in (date):

if i == "-":

turtle.pencolor("red")

turtle.write("點",move=false,font=('arial',18,'normal'))

turtle.up()

turtle.fd(40)

elif i == "=":

turtle.pencolor("blue")

turtle.write("分", move=false, font=('arial',18, 'normal'))

turtle.penup()

turtle.fd(40)

elif i == "+":

turtle.color("green")

turtle.write("秒", move=false, font=('arial',18, 'normal'))

turtle.penup()

turtle.fd(40)

else:

draw_choice(eval(i))

def main():

turtle.setup(800,350,200,200)

turtle.penup()

turtle.bk(300)

turtle.pensize(5)

draw_date(time.strftime("%h-%m=%s+",time.localtime()))

turtle.hideturtle()

turtle.done()

main()

程式執行結果如下:

Python 七段數碼管

缺點 七段數碼管間無間隔不美觀,沒有 年 月 日 字樣不直觀,不能表示系統時間需手動輸入 import turtle defdrawline draw 繪製單段數碼管 turtle.pendown if draw else turtle.penup turtle.fd 40 turtle.right...

七段數碼管顯示實驗

連線模組埠的中間變數使用wire型別,而不應該是reg型別 不能再always裡呼叫模組 在verilog中,所有的埠隱含地宣告wire型別 如果輸出型別的埠需要儲存數值,則必須將其顯式地宣告為reg資料型別。不能將input和inout型別的埠宣告為reg資料型別,因為reg型別的變數是用於儲存數...

繪製七段數碼管

seven digits draw v1.0 第一,繪製線 第二,繪製七段數碼管組成的數字 第三,繪製優化數碼管間距 第四,繪製多組數字 第五,獲取系統時間 第六,主函式執行程式。如下 import turtle as t import time def drawline draw drawgap ...