python14段数码管绘制字母,python七段数码管绘制123

大家好,本文将围绕turtle七段数码管画数字和字母展开说明,七段数码管python编程绘制0-9是一个很多人都想弄明白的事情,想搞清楚python画一个七段数码管数字需要先了解以下几个事情。

示例7:七段数码管绘制

 基本思路

-步骤1:绘制单个数字对应的数码管
-步骤2:获得一串数字,绘制对应的数码管
-步骤3:获得当前系统时间,绘制对应的数码管 

 代码段1:

import turtle
def drawLine(draw: object) -> object:  # 绘制单段数码管
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    turtle.right(90)
def drawDigit(digit):  # 根据数字绘制七段数码管
    drawLine(True) if digit in [2, 3, 4, 5, 6, 7, 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)
    turtle.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)
    turtle.left(180)
    turtle.penup()  # 为绘制后续数字确定位置
    turtle.fd(20)  # 为绘制后续数字确定位置

#绘制单个数字对应的数码管

 需要考虑每次绘制完向前移动的距离

代码段2:

import turtle
def drawLine(draw):		#绘制单段数码管
	turtle.pendown() if draw else turtle.penup()
	turtle.fd(40)
	turtle.right(90)
def drawDigit(digit):	#根据数字绘制七段数码管
	drawLine(True) if digit in [2,3,4,5,6,7,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)
	turtle.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)
	turtle.left(180)
	turtle.penup()	#为绘制后续数字确定位置
	turtle.fd(20)	#为绘制后续数字确定位置
def drawDate(date):
	for i in date:
		drawDigit(eval(i))  
def main():
	turtle.setup(800,350,200,200)
	turtle.penup()
	turtle.fd(-300)
	turtle.pensize(5)
	drawDate('20181010')
	turtle.hideturtle()
	turtle.done()
main()

运行结果:

 完整代码:

#SevenDigitsDrawV2.py
import turtle,time
def drawGap():		#获取间隔
	turtle.penup()
	turtle.fd(5)
def drawLine(draw):		#绘制单段数码管
	drawGap()
	turtle.pendown() if draw else turtle.penup()
	turtle.fd(40)
	drawGap()
	turtle.right(90)
def drawDigit(digit):	#根据数字绘制七段数码管
	drawLine(True) if digit in [2,3,4,5,6,7,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)
	turtle.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)
	turtle.left(180)
	turtle.penup()	#为绘制后续数字确定位置
	turtle.fd(20)	#为绘制后续数字确定位置
def drawDate(date):		#data为日期,格式为'%Y-%m=%d+'
	turtle.pencolor("red")
	for i in date:
		if i=='-':
			turtle.write('年',font=("Arial",18,"normal"))
			turtle.pencolor("green")
			turtle.fd(40)
		elif i=='=':
			turtle.write('月',font=("Arial",18,"normal"))
			turtle.pencolor("blue")
			turtle.fd(40)
		elif i=='+':
			turtle.write('日',font=("Arial",18,"normal"))
		else:
			drawDigit(eval(i))  
def main():
	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()

 运行效果:

 代码简单分析:

#SevenDigitsDrawV2.py
import turtle,time
def drawGap():        #获取间隔,间隔长度为5
    turtle.penup()
    turtle.fd(5)
def drawLine(draw):        #绘制单段数码管
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
def drawDigit(digit):    #根据数字绘制七段数码管
    drawLine(True) if digit in [2,3,4,5,6,7,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)
    turtle.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)
    turtle.left(180)
    turtle.penup()    #为绘制后续数字确定位置
    turtle.fd(20)    #为绘制后续数字确定位置
def drawDate(date):        #data为日期,格式为'%Y-%m=%d+'
    turtle.pencolor("red")
    for i in date:
        if i=='-':
            turtle.write('年',font=("Arial",18,"normal"))
            turtle.pencolor("green")
            turtle.fd(40)
        elif i=='=':
            turtle.write('月',font=("Arial",18,"normal"))
            turtle.pencolor("blue")
            turtle.fd(40)
        elif i=='+':
            turtle.write('日',font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i))  
def main():
    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()

举一反三


-模块化思维:确定模块接口,封装功能
-规则化思维:抽象过程为规则,计算机自动执行
-化繁为简:将大功能变为小功能组合,分而治之
应用问题的扩展
-绘制带小数点的七段数码管
-带刷新的时间倒计时效果
-绘制高级的数码管

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值