当数码管遇上系统时间,python最终成为催化剂
小Bob 小Bob Bob来啦
2020年12月04日 23:00 __ _ _ _ _

彼方为谁,无我有问 九月露湿,待君之前。
——《你的名字》

冬天来了,保暖的同时也要注意疫情哦~
lambda函数
lambda函数: 是一种匿名函数,能够返回一个函数名作为结果,也叫无名函数。在使用lambda保留字定义,函数名是返回结果。
使用:lambda函数用于定义简单的,能够在一行内表示的函数,实际上并不常用。
函数使用模板: <函数名> =lambda <参数> :<表达式>
其返回的结果为可以赋值为函数名字。
实例:
f=lambda x,y:x+yprint(f(1,1))
其运行结果为2。
一般情况下,lambda函数主要用作一些特定函数或方法的参数,通常还是使用def来定义普通函数。
**七段数码管实现
** ** 什么是七段数码管? **
数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP,其基本单元是发光二极管。
在用python实现七段数码管时是利用turtle库来实现一个类似于数码管的显示效果。 其简单步骤如下:
绘制单个数字对应的数码管
获得一串数字,绘制对应的数码管
获得当前系统时间,绘制对应的数码管
对于为什么是七段,可以简单理解为它就是由七个基本线条构成的。所以,第一步,我们得首先绘制这七个基本线条,而且这 七个线条也是有顺序的哦 。基本图形如下:

在绘制数码管时,得先绘制一条线,然后再绘制七条线。
加上之前学的函数,便可以将部分功能拆分出来,将部分功能模块化,也可以提高代码的可读性。
turtle库在之前用过,相关的库函数也已经了解过。
** turtle库复习传送门: 用Python也能画图?用Python来画个“python”用turtle实现一条线代码:*****importturtledefdrawLine(draw):turtle.pendown()ifdrawelseturtle.penup()#用draw判断是否真实绘制一条线还是让海龟飞过去turtle.fd(40)上面只是一个函数模块,函数并不会自己去执行,而是在被调用后才会被执行。当一条线绘制完成后,那么七条线也就简单了:*********************************importturtledefdrawLine(draw):turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)turtle.right(90)#绘制第一个数码管defdrawDigit(digit):#绘制线的函数,在绘制一条线后会右转90度,四条线,可以绘制出一个0字形drawLine(True)ifdigitin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,1,3,4,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,2,3,5,6,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,2,6,8]elsedrawLine(False)turtle.left(90)#再回到前进方向再进行三次右转drawLine(True)ifdigitin[0,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,2,3,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,1,2,3,4,7,8,9]elsedrawLine(False)turtle.left(180)turtle.penup()#为绘制后续数字确定位置turtle.fd(20)#为绘制后续数字确定位置defdrawData(data):#获得输出的数字foriindata:drawDigit(eval(i))#通过eval函数将数字变为整数defmain():turtle.setup(800,350,200,200)turtle.penup()turtle.fd(-300)turtle.pensize(5)drawData(‘20210101’)#将一串字符串拆分成单个字符的函数turtle.hideturtle()turtle.done()main()**那么系统时间如何获得呢?**还记得time这个标准库么,没错,便是用它来实现获取系统时间,其实我们以后要是自己写一个app,那么显示在app内显示时间的部分我们便知道怎么用了,要记得哦。添加系统时间步骤:使用time库获得系统当前时间,并且还可以在增加年月日的同时增加颜色,是不是很有趣呢?**代码实现如下:*******************************************************importturtleimporttimedefdrawGap():#绘制数码管间隔函数turtle.penup()turtle.fd(5)defdrawLine(draw):drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)#绘制第一个数码管defdrawDigit(digit):#绘制线的函数,在绘制一条线后会右转90度,四条线,可以绘制出一个0字形drawLine(True)ifdigitin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,1,3,4,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,2,3,5,6,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,2,6,8]elsedrawLine(False)turtle.left(90)#再回到前进方向再进行三次右转drawLine(True)ifdigitin[0,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,2,3,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdigitin[0,1,2,3,4,7,8,9]elsedrawLine(False)turtle.left(180)turtle.penup()#为绘制后续数字确定位置turtle.fd(20)#为绘制后续数字确定位置defdrawDate(date):#date为日期,格式为’%Y-%m=%d+’turtle.pencolor(“red”)foriindate:ifi==’-‘:turtle.write(‘年’,font=(“Arial”,18,”normal”))turtle.pencolor(“green”)turtle.fd(40)elifi==’=’:turtle.write(‘月’,font=(“Arial”,18,”normal”))turtle.pencolor(“blue”)turtle.fd(40)elifi==’+’:turtle.write(‘日’,font=(“Arial”,18,”normal”))else:drawDigit(eval(i))defmain():turtle.setup(800,350,200,200)turtle.penup()turtle.fd(-300)turtle.pensize(5)drawDate(time.strftime(‘%Y-%m=%d+’,time.gmtime()))#获取系统时间turtle.hideturtle()turtle.done()main()运行结果如下:
自己也可以尝试不同的颜色哦~(Python系列)未完待续…
最后的话: ****刷题要找自己的不足,然后去专攻。 ** ** ** ** 往期推荐: **
十一月碎碎念 || 假如时间只剩31天 2020-12-01
用栈解决N皇后问题(C语言) 2020-12-02
《流浪猫鲍勃》:一人一猫,彻底温暖了整个冬天 2020-11-28
为你,千千万万遍.
关注 程序员Bob 公众号,与你一起终生学习

一键三连,就差你了
预览时标签不可点
阅读
__











