今天我们学习了七段数码管的绘制,通过一个程序学习了数字用七段数码的绘制。首先我们看下图的绘制,我们先理解下各个数字由几步线条组成。
然后回到我们的程序,先给大家看看我们的程序图,因为小编录屏很模糊,但是运行的时候它是一笔一笔的绘制出来的,结果是出来这样。我们先学习下绘制的基本步骤。
一.基本思路:
步骤一:首先绘制单个数字对应的数码管
步骤二:获得一串数字,绘制对应的数码管
步骤三:获得当前系统时间,绘制对应的数码管
二.概念补充:
1.random()函数
1)描述:random()方法返回随机生成的一个实数,但是它的值只能在[0,1)范围内。
2)语法:
import random
random.random()
3)输出结果:
4)注意事项:
Random()是不能直接访问的,需要导入random模块。
2.time.strtime()函数
1)描述:time.strftime()函数收到以时间元组,并返回以可读字符串表示的当地时间。
2)语法:time.strftime(format[,t])
3)参数:
format—格式字符串
t---可选的参数t
4)返回值:返回以可读字符串表示的当地时间。三.制作代码:
#七段数码管的绘制.py
from turtle import * #调用turtle、random、time库
from random import *
import time
def drawGap():
penup() #提笔
fd(5)
def drawLine(draw):
drawGap()
if draw: #除了七段数码管提笔,其余停笔
pendown()
else:
penup()
fd(40) #向前40
drawGap()
right(90) #向右旋转90
def drawDight(digit):
pencolor(random(),random(),random())#颜色随机
drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)#第一段那些数字会经过
pencolor(random(), random(), random())
drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
pencolor(random(), random(), random())
drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
pencolor(random(), random(), random())
drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)
pencolor(random(), random(), random())
left(90)#向左旋转90度
drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)
pencolor(random(), random(), random())
drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
pencolor(random(), random(), random())
drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
pencolor(random(), random(), random())
left(180)
penup() # 为绘制后续数字确定位置
fd(20) # 为绘制后续数字确定位置
def drawDate(date):
for i in date:
if i == '-': #设定年、月、日的单位
write('年', font=("Arial", 28, "normal"))
pencolor("orange")
fd(40)
elif i == '=':
write('月', font=("Arial", 28, "normal"))
pencolor("pink")
fd(40)
elif i == '+':
write('日', font=("Arial", 28, "normal"))
pencolor("yellow")
else:
drawDight(eval(i))
def main():
setup(800, 350, 200, 200) #设置画布大小
penup()
fd(-300)
pensize(5)
drawDate(time.strftime('%Y-%m=%d+',time.localtime())) # 将模板设置为"小时-分钟=秒+"
hideturtle()
done()
main()
import turtle as t #导入turtle模块,简化为t
import random as r #导入随机模块,简化为r
import time
"""定义绘制线段"""
def drawLine(draw): #定义一个函数drawLine,形参draw
t.pendown() if draw else t.penup() #画笔落下,做好准备
t.pencolor(r.random(),r.random(),r.random()) #画笔颜色随机生成
t.fd(80)
t.right(90)
"""定义绘制0-9"""
def drawDigit(i): #定义一个函数drawDigit,形参i
#画第1段:
drawLine(True) if i in [2,3,4,5,6,8,9] else drawLine(False)
#画第2段:
drawLine(True) if i in [0,1,3,4,5,6,8,9] else drawLine(False)
#画第3段
drawLine(True) if i in [0,2,3,5,6,8] else drawLine(False)
#画第四段
drawLine(True) if i in [0,2,6,8] else drawLine(False)
t.left(90) #每画一段之后就要转90°,画到第四段是一个路口,需要向左转90°使其继续直行。
#画第五段
drawLine(True) if i in [0,4,5,6,8,9] else drawLine(False)
#画第六段
drawLine(True) if i in [0,2,3,5,7,8,9] else drawLine(False)
#画第七段
drawLine(True) if i in [0,1,2,3,4,7,8,9] else drawLine(False)
t.left(180) #画笔改为反方向旋转180度。
t.penup()
t.fd(20) #为绘制第二个数字确定位置,向右移动20px
"""定义绘制日期的所有数字函数"""
def drawDate(date):
for i in date:
drawDigit(eval(i))
"""定义主函数"""
def main():
t.setup(900,900)
t.pensize(5)
t.penup()
t.fd(-400)
drawDate(time.strftime("%Y%m%d"))
t.hideturtle()
t.done()文章来源:https://www.toymoban.com/news/detail-432445.html
main() #函数的调用
文章来源地址https://www.toymoban.com/news/detail-432445.html
到了这里,关于python小程序之七段数码管的绘制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!