用Turtle绘制七段晶体管显示时间和日期
设计思路:
自定义绘制间隙函数—>自定义绘制单段横线函数—>自定义绘制七段晶体管数字0-9函数—>自定义绘制时间和日期函数—>设计并调用主函数
import turtle as t
import time //引入库函数
def drawGab(): //自定义函数绘制间隙
t.penup()
t.fd(5)
def drawLine(line): //自定义函数绘制单段横线
drawGab()
t.pendown() if line else t.penup() //注意这里简写的if-else格式:<表达式1> if(条件) else <表达式2>
t.fd(20) //在决定是否抬起画笔后不要忘记向前移动
drawGab()
t.right(90) //不要忘记转换角度
def drawDigit(digit): //绘制七段晶体管数字0-9
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)
t.left(90) //注意这里不要忘记转角,按照顺序并根据数字特点依次绘制每段横线
drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
t.right(180) //注意将角度变为原先的起始方向
t.penup() //抬笔!抬笔!抬笔!
t.fd(20) //向前移动,为绘制下一个数字做准备
def drawTime(time): //自定义函数显示时间和日期
t.pencolor("red") //画笔颜色可以自定义
for i in time: //不要忘记for循环,以及需要注意for循环/if/自定义函数的格式
if i=="+":
t.write("年",font=("宋体",20,"normal")) //设置字体格式,这里需要注意turtle.wrile()及font()函数的使用格式
t.pencolor("red")
t.fd(40)
elif i=="-":
t.write("月",font=("宋体",20,"normal"))
t.pencolor("red")
t.fd(40)
elif i=="*":
t.write("日",font=("宋体",20,"normal"))
t.pencolor("purple")
t.fd(70)
elif i=="/":
t.write("时",font=("宋体",20,"normal"))
t.pencolor("green")
t.fd(40)
elif i=="&":
t.write("分",font=("宋体",20,"normal"))
t.pencolor("blue")
t.fd(40)
elif i=="#":
t.write("秒",font=("宋体",20,"normal")) //时间绘制已经结束,不需要再设置字体格式
else:
drawDigit(eval(i)) //注意这里需要把字符转换为数字
def main(): //设计主函数
t.setup(1300,800,0,0) //设置画布大小
t.pensize(5)
t.penup() //控制画笔起始位置,为绘图做准备
t.fd(-450) //画笔左移
drawTime(time.strftime("%Y+%m-%d*%H/%M&%S#",time.localtime())) //调用时间函数获取时间并将时间值传给自定义函数drawTime()
t.hideturtle() //绘图结束后隐藏小乌龟
t.done()
main() //调用主函数