python中turtle绘制七段数码管
效果如下,思路是先绘制一条线,在绘制七条线,传入数字,如果数字绘制需要七段中某一位置有笔画,就绘制,无则不绘。
# coding=utf-8 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) # 绘制顺序是一定的,只要有数字就绘制,无就不绘制 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) turtle.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) turtle.left(180) turtle.penup() turtle.fd(20) def drawDate(date): turtle.pencolor("red") for i in date: if i == -: turtle.write(年, font=("Arial", 18, "normal")) turtle.pencolor("green") turtle.fd(40) elif i == =: turtle.write(月, font=("Arial", 18, "normal")) turtle.pencolor("blue") turtle.fd(40) elif i == +: turtle.write(日, font=("Arial", 18, "normal")) else: drawDigit(eval(i)) def main(): turtle.setup(800, 350, 200, 200) turtle.penup() turtle.fd(-350) turtle.pensize(5) # drawDate(2018-10=10+) drawDate(time.strftime(%Y-%m=%d+, time.gmtime())) turtle.hideturtle() turtle.done() main()