實例7:七段數碼管繪制


 以下是我的答案:
1
import turtle 2 import time 3 4 def drawGap(): 5 turtle.penup() 6 turtle.fd(5) 7 8 def drawLine(draw): 9 drawGap() 10 turtle.pendown() if draw else turtle.penup() 11 turtle.fd(40) 12 drawGap() 13 turtle.right(90) 14 15 def drawDigit(digit): 16 drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False) 17 drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False) 18 drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False) 19 drawLine(True) if digit in [0,2,6,8] else drawLine(False) 20 turtle.left(90) 21 drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False) 22 drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False) 23 drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False) 24 turtle.left(180) 25 turtle.penup() 26 turtle.fd(20) 27 28 def drawDate(date): 29 turtle.pencolor("red") 30 for i in date: 31 drawDigit(eval(i)) 32 33 def main(): 34 turtle.tracer(False) 35 turtle.hideturtle() 36 turtle.setup(800,350,200,200) 37 turtle.penup() 38 turtle.fd(-270) 39 turtle.pensize(5) 40 drawDate(time.strftime("%Y%m%d",time.gmtime())) 41 turtle.done() 42 main()

下面是參考答案:

 1 import turtle as t
 2 import time
 3 def drawGap(): #繪制數碼管間隔
 4     t.penup()
 5     t.fd(5)
 6 def drawLine(draw):   #繪制單段數碼管
 7     drawGap()
 8     t.pendown() if draw else t.penup()
 9     t.fd(40)
10     drawGap()
11     t.right(90)
12 def drawDigit(d): #根據數字繪制七段數碼管
13     drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
14     drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
15     drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
16     drawLine(True) if d in [0,2,6,8] else drawLine(False)
17     t.left(90)
18     drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
19     drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
20     drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False)
21     t.left(180)
22     t.penup()
23     t.fd(20)
24 def drawDate(date):
25     t.pencolor("red")
26     for i in date:
27             drawDigit(eval(i))
28 def main():
29     t.setup(800, 350, 200, 200)
30     t.penup()
31     t.fd(-300)
32     t.pensize(5)
33     drawDate(time.strftime('%Y%m%d',time.gmtime()))
34     t.done()
35 main()

 

【參考代碼】

import turtle as t
import time
def drawGap(): #繪制數碼管間隔
    t.penup()
    t.fd(5)
def drawLine(draw):   #繪制單段數碼管
    drawGap()
    t.pendown() if draw else t.penup()
    t.fd(40)
    drawGap()
    t.right(90)
def drawDigit(d): #根據數字繪制七段數碼管
    drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,6,8] else drawLine(False)
    t.left(90)
    drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False)
    t.left(180)
    t.penup()
    t.fd(20)
def drawDate(date):
    t.pencolor("red")
    for i in date:
            drawDigit(eval(i))
def main():
    t.setup(800, 350, 200, 200)
    t.penup()
    t.fd(-300)
    t.pensize(5)
    drawDate(time.strftime('%Y%m%d',time.gmtime()))
    t.done()
main()


免責聲明!

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



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