话不多说,源代码。
#e7.1drawsevensegdisplay.py
import turtle,datetime
def drawline(draw):#绘制单段数码管
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
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 [2,3,5,6,7,8,9,0] 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):#获得想要输出的数字
for i in date:
drawdigit(eval(i))#注意:通过eval()函数将数字变为整数
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawdate(datetime.datetime.now().strftime('%Y%m%d'))
turtle.hideturtle()
main()
代码首先用函数分别实现了绘制单段数码管,然后根据数字单段数码管,输入想要的数字,用主函数设置了pen的基本属性,让我们详细来看。(注意引入了turtle丶datetime库)
首先看绘制单段数码管的代码:
def drawline(draw):#绘制单段数码管
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
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 [2,3,5,6,7,8,9,0] 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):#获得想要输出的数字
for i in date:
drawdigit(eval(i))#注意:通过eval()函数将数字变为整数
想要输出的数字由datetime.datetime.now()提供,对其中每一个数字提出来,进行绘画。(注意使用eval()函数将字符串转为整数)
使用main函数设置pen属性,以及调用函数。