绘制一个时间的七段数码管
七段数码管:https://baike.baidu.com/item/七段数码管
思考:
1. 绘制一条线
2. 绘制七条线,同时规定每条线绘制的先后顺序
3. 根据不同的数字绘制这七条线中的某几条,构成一个数字
4. 传入一个时间,绘制多个数字
5. 获得系统时间,绘制多个数字
6. 获得系统时间,绘制多个数字,添加年月日、颜色等元素
- 七段数码管是由七个基本线条构成的,所以首先要能够绘制这七个基本线条。可以看到七段数码管的七个线条是有固定顺序的,它构成了一个数字8的形状,我们可以从左边的一个位置开始,将它们逐一编号,形成一个行动的序列,这样的一个行动序列可以覆盖这七条线段。在这七段线条中不同的线条是否被绘制就能形成不同的数字。
- 通过函数将功能做一个分割,定义一个函数drawLine,这个函数的作用就是画一条线。画一条线又分两种情况,是真实地画一条线,还是让海龟移飞过去并不画线,可以通过一个变量draw来控制,作为函数drawLine的参数。如果draw是真值,就让画笔落下,如果不是,就让画笔抬起来飞过去
- 如果绘制中不加判断,调用drawLine,每一条线都会被绘制出来,绘制的结果就是一个数字8。可以设计一个函数drawDigit,根据参数digit来决定如何绘制对应的数字,digit取值范围为0~9的数字,判断当前给的整数是几,如果给出的数字是digit=8,那么每一条线段都要被真实绘制,如果给出的数字是digit=0,那么第一条线就不需要被真实绘制
- 通过给出一个字符串时间,将字符串中的每个数字取出赋值给digit,让digit根据确定的规则绘制线段
# Drawdigit.py
import turtle
def drawLine(draw): # 绘制单段数码管
turtle.pendown() if draw else turtle.penup()
turtle.forward(40)
turtle.right(90)
def drawDigit(digit): # 根据数字绘制七段数码管
drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2</