理解实例7花了些时间,在这里把个人理解贴在注释了。
同时随便修改了一下,画到以秒为单位了,仅供参考。
代码大部分时抄书上的,简单修改
突然发现贴上来可以激励我学Python,嘿嘿
# e7.2 DrawSevenSegDisplay.py
import turtle as t
import datetime as d
def gap(): # 绘制数码管间距
t.up() # 抬起画笔
t.fd(5) # 间距为5个像素
def line(draw): # 单段数码管
gap() # 运行gap函数
t.down() if draw else t.up() # 紧接gap函数的抬起然后放下
t.fd(40) # 数码管的主体部分
gap() # 画完后在继续gap
t.right(90)
def digit(d): # 七段数码管 # True 和False为line的参数,决定 t.done()
line(True) if d in [2,3,4,5,6,8,9] else line(False) # 中间的横线
line(True) if d in [0,1,3,4,5,6,7,8,9] else line(False) # 右下竖线
line(True) if d in [0,2,3,5,6,8,9] else line(False) # 下面横线
line(True) if d in [0,2,6,8] else line(False) # 左下竖线
t.left(90) # 画完左下竖线后,将向右的90°转左90°画左上竖线
line(True) if d in [0,4,5,6,8,9] else line(False) # 左上竖线
line(True) if d in [0,2,3,5,6,7,8,9] else line(False) # 上面横线
line(True) if d in [0,1,2,3,4,7,8,9] else line(False) #右上竖线
t.left(180) # 画完右上竖线时,头向负半轴,转180°向正半轴
t.up()
t.fd(20) # 为绘制后续数字确定位置,两个数字的间隔
def date(x):
t.pencolor("red") # 年的颜色 可以将颜色放到else里边使数字颜色一致
for i in x:
if i == "-": # 绘制时间单位 下同
t.write("年",font=("Arial",18,"normal")) # font 为字体格式
t.pencolor("green") # 绘制完年后改变颜色,下同 可仅改变单位颜色
t.fd(40)
elif i == "=":
t.write("月",font=("Arial",18,"normal"))
t.pencolor("blue")
t.fd(40)
elif i == "+":
t.write("日",font=("Arial",18,"normal"))
t.pencolor("purple")
t.fd(40)
elif i == "/":
t.write("时",font=("Arial",18,"normal"))
t.pencolor("black")
t.fd(40)
elif i == "|":
t.write("分",font=("Arial",18,"normal"))
t.pencolor("gold")
t.fd(40)
elif i == ";":
t.write("秒",font=("Arial",18,"normal"))
t.pencolor("grey")
t.fd(40)
else: # 画数字
digit(eval(i))
def main():
t.setup(800,350)
t.up()
t.fd(-600) # 确定初始位置
t.pensize(5)
t.speed(0) # 加快了绘制速度,之前画得好慢,等不及。0为最快,10为其次快,1为最慢
date(d.datetime.now().strftime("%Y-%m=%d+%H/%M|%S;")) # 调用函数
t.hideturtle()
t.done()
main()
就这样叭,码字不易。