所謂七段數碼管,即如下圖示
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 ...