基於turtle庫的七段數碼管繪製

2022-08-30 18:18:08 字數 3851 閱讀 2828

·文章結構

>樣例及概覽

>函式框架分析

>功能發展

·樣例及概覽

七段數碼管,是訊號燈、電子錶等很多裝置的顯示形式。而利用python的turtle庫,我們也可以模擬著寫出乙個動態生成的七段數碼管,用來顯示日期、時間等等任何可以通過數字展示的東西。

下面的例子展示了乙個基本的日期顯示功能。

# 日曆(自定義日期、七段電子管實現)

import turtle as t

#前進步長

forward = 40

#間隔步長

interval = 20

def drawline(k):

t.pendown() if k else t.penup()

t.fd(forward)

t.right(90)

return

def drawnum(k):

#觀察各字元在數碼管中的展現形式,一共七條線,而有些數字在其中某條線時不必繪製

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

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

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

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

t.left(90)

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

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

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

t.left(180)

t.penup()

t.fd(interval)

t.pendown()

return

def main():

inf = "20190413"

#init

t.setup(800,400,0,0)

t.pensize(10)

t.pencolor("red")

t.penup()

t.seth(180)

t.fd(320)

t.pendown()

t.seth(0)

#control color and show character

cnt = 0

for i in inf:

cnt += 1

drawnum(eval(i))

if cnt == 4:

#set character with color

t.pencolor("black")

t.write("年")

t.penup()

t.fd(interval)

t.pendown()

#recover and transform color

t.pencolor("green")

elif cnt == 6:

#set character with color

t.pencolor("black")

t.write("月")

t.penup()

t.fd(interval)

t.pendown()

#recover and transform color

t.pencolor("pink")

elif cnt == 8:

#set character with color

t.pencolor("black")

t.write("日")

t.done()

return

main()

·函式框架分析

運用計算思維,我們很容易想出:只要能實現乙個數字的七段數碼管繪製,那麼我們就可以通過**復用將其擴充套件至任意個數的七段數碼管繪製。

「此時,我們將總任務拆封成了兩個小任務:1)單個數字七段數碼管繪製。2)重複多次用以繪製多個數字。」

針對2),我們簡單構想,只需要乙個字串用來存放數字,然後用迴圈來遍歷它,並將current value穿到1)所對應的方法中去就好了

針對1),我們再次將問題分治。

「新1)畫出七段數碼管其中的一段,即一條線。新2)重複七次用以繪製七段數碼管。」

針對新2),我們首先要把七段數碼管按一定順序分解為七筆。

針對新1),我們可以通過penup()、pendown()函式來控制是否畫出這一筆。而在除了第四步後每畫過一筆,我們就讓其右轉90度,為畫下一筆作準備。

完成以上分析後,我們就已經解出了這個問題,只需要用**實現它。

·發展在主函式main()中,我們可以將預定義的字串inf更改為乙個自定義模組。

在主函式main()中,我們可已修改年、月、日為時、分、秒,用以顯示時刻。

引入time庫來實時獲取日期及時間資訊。

在主函式main()的for迴圈中設定了不同數字所對應的顏色,可以自由更改為其他的。

繪製七段數碼管,turtle

繪製單段數碼管 import turtle import time def drawline draw turtle.pendown if draw else turtle.penup turtle.fd 40 turtle.right 90 根據數字繪製數碼管 def drawdigit digi...

python七段數碼管,turtle和time實現

使用turtle庫,time庫自動繪製七段數碼管,顯示當前日期 畫筆粗細2.5,繪製結束隱藏畫筆,線段間隔3 6,匯入時間模組,手動輸入日期改為自動獲取日期 import turtle as t import time 定義畫線or不畫線函式 def drawline draw t.pu t.fd ...

繪製七段數碼管

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