Python_code_七段数码管绘制实现_happy-new-year

效果图:

 

 

 

 

 

 

 

 

代码如下:

#利用七段数码管, 绘制 HAPPY NEW YEAR
'''
思路:
对于常规字符,利用7段数码管的绘制规律进行绘制
对于特殊字符,直接写出,并用相应的处理空出对应的空隙
'''
import turtle

#绘制数码管间隔,就是留一点空隙
def drawGap():
turtle.penup()
turtle.fd(5) #提笔前进5个像素
return 0

#绘制单段数码管
def drawLine(draw):
drawGap() #提笔前进5个像素
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap() #提笔前进5个像素
turtle.right(90)

#根据数字绘制七段数码管
def drawChar(d):
#七段数码管,共计七笔,每一个if else 代表一笔
drawLine(True) if d in ['A','B','E','F','H','P','Y',] else drawLine(False)#向右(中间)
drawLine(True) if d in ['A','B','H','N','U','Y',] else drawLine(False)#向下(右下)
drawLine(True) if d in ['Y','B','C','E','L','U','Y',] else drawLine(False)#向左(最下)
drawLine(True) if d in ['A','B','C','E','F','H','L','N','P','U',] else drawLine(False)#向上(左下)
#四笔之后画完了下半部分的四画,此时画笔回到初始方向(向右),要想继续画上方三笔,需要将画笔逆时针旋转90度,调整至向上方向
turtle.left(90)
drawLine(True) if d in ['A','B','C','E'

转载于:https://www.cnblogs.com/lyj0123/p/11243426.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是一个简单的例子: ```python import turtle def draw_dash(length): turtle.penup() turtle.pendown() turtle.forward(length) turtle.penup() def draw_segment(length, incline): turtle.pendown() angle = incline * turtle.heading() turtle.setheading(angle) turtle.forward(length) turtle.penup() angle = -incline * turtle.heading() turtle.setheading(angle) def draw_digit(digit, size=100): turtle.setheading(90) # 定义每个数字对应的数码段 segments = {0: [1,1,1,1,1,1,0], 1: [0,1,1,0,0,0,0], 2: [1,1,0,1,1,0,1], 3: [1,1,1,1,0,0,1], 4: [0,1,1,0,0,1,1], 5: [1,0,1,1,0,1,1], 6: [1,0,1,1,1,1,1], 7: [1,1,1,0,0,0,0], 8: [1,1,1,1,1,1,1], 9: [1,1,1,1,0,1,1], 'a': [1,1,1,0,1,1,1], 'b': [0,0,1,1,1,1,1], 'c': [1,0,0,1,1,1,0], 'd': [0,1,1,1,1,0,1], 'e': [1,0,0,1,1,1,1], 'f': [1,0,0,0,1,1,1]} for i, segment in enumerate(segments[digit]): if segment: if i == 0: draw_segment(size * 1.1, 2) elif i == 1 or i == 2: draw_segment(size, 1) elif i == 3 or i == 4 or i == 5: draw_segment(size, -1) elif i == 6: draw_segment(size * 1.1, -2) else: if i == 0: draw_dash(size * 1.1) elif i == 1 or i == 2 or i == 3 or i == 4 or i == 5: draw_dash(size) elif i == 6: draw_dash(size * 1.1) turtle.setheading(0) # 测试绘制数字 turtle.penup() turtle.goto(-200, 0) draw_digit('a') turtle.goto(-50, 0) draw_digit('b') turtle.goto(100, 0) draw_digit('c') turtle.goto(250, 0) draw_digit('d') turtle.done() ``` 其中 `segments` 定义了每个数字对应的七段数码管的状态,`draw_segment` 和 `draw_dash` 分别用于绘制数码管和间隔线,`draw_digit` 则是根据 `segments` 中的状态来绘制数字。 在这个例子中,我们测试了绘制 a、b、c、d 四个字母/数字,你可以通过修改 `draw_digit` 中 `segments` 的值来绘制你所需要的数字或字母。 希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值