Python菜鸟------七段数码管绘制

在这里插入图片描述

import turtle as t
import time
def seperate():  # 这一段函数是给数码管中每一笔画间距
    t.fd(6)
def penupordown(de): # 定制每一笔画 函数
    if de:
        t.pendown()
    t.fd(34)
    t.penup()
    seperate()
    t.right(90)
    seperate() 
def draw(digit):  '''读入数字,判断该数字在某一笔画中是否需要作画,需要则落
		     笔不需要则提笔'''
    penupordown(True) if digit in [2,3,4,5,6,8,9] else penupordown(False)
    penupordown(True) if digit in [0,3,4,5,6,7,8,9] else penupordown(False)
    penupordown(True) if digit in [0,2,3,5,6,8,9] else penupordown(False)
    penupordown(True) if digit in [0,1,2,6,8] else penupordown(False)
    t.fd(-6)		# 在第四和第五画笔之间我们需要重新调整画笔走向
    t.left(90)
    seperate()
    penupordown(True) if digit in [0,1,4,5,6,8,9] else penupordown(False)
    penupordown(True) if digit in [0,2,3,5,6,7,8,9] else penupordown(False)
    penupordown(True) if digit in [0,2,3,4,7,8,9] else penupordown(False)
    t.seth(0) 	 # 单个数码管绘制完成之后调整海龟前进方向
def inputdata(data): 	# 读入数据,利用for ..in 循环读入数据
    for i in data:
        pencolor(eval(i))
        draw(eval(i))
        t.fd(32)   # 绘制完单个数码管之后,海龟进入下一个数码管的第一个画笔
def pencolor(n):  # 画笔颜色控制函数
    colorlist = ["tomato",'pink','cyan','black','magenta','brown','green',\
                 'blue','yellow','purple']
    t.pencolor(colorlist[n])
def main():  #定义主函数
    t.setup(900,400)
    t.up()
    t.speed(5)
    t.goto(-300,25)
    t.pensize(5)
    Data = list(input('请输入数字:\n'))
    inputdata(Data)
    t.hideturtle()   # 最后把海龟藏起
def examinate():  
    try:
        main()
    except:
        print("输入错误,请重新输入!")
        return examinate()
examinate()

拓展:
绘制数码管,当然需要学习怎么绘制当前时间的数码管。
以下效果图:
在这里插入图片描述

 # 首先我们需要引入 time库
 from time import localtime,strftime

这个时候我们需要修改 ‘数据输入’ 代码:

Data = list(input('请输入数字:\n'))
# 修改之后
Data = list(strftime("%Y!%m@%d#%H$%M^%S&",localtime()))  #注意{!@#$^&}符号,下面做解释

相关内容参考 time库–时间格式化:
https://blog.csdn.net/qq_49107802/article/details/108979210

我们知道修改之后列表Data并非纯数字了,这样与函数 inputdata()相违背。我们需要作出新的修改

def inputdata(data): 	# 读入数据,利用for ..in 循环读入数据
    for i in data:
        pencolor(eval(i))
        draw(eval(i))
        t.fd(32)   # 绘制完单个数码管之后,海龟进入下一个数码管的第一个画笔

修改之后:
			''' 解释{!@#$^&}:特殊符号引入文字 ‘年月日时分秒’为什么不直接使用‘年月日时分秒’呢?
			因为"%Y年%m月%d日%H时%M分%S秒" 并不会使文字显现在屏幕上
			t.write('年',font=('Arial',25,'normal')等才能write文字。 '''
			
def inputdata(data): 	# 读入数据,利用for ..in 循环读入数据
    for i in data:	
        if i == '!':  # font 是用来定义字体的大小和形状的,至于'Arial'感兴趣的同学可以自己查一下
    	    t.write('年',font=('Arial',22,'normal'))
        elif i == '@':
    	    t.write('月',font=('Arial',22,'normal'))
        elif i == '#':
    	    t.write('日',font=('Arial',22,'normal'))
        elif i == '$':
    	    t.write('时',font=('Arial',22,'normal'))
        elif i == '^':
    	    t.write('分',font=('Arial',22,'normal'))
        elif i == '&':
    	    t.write('秒',font=('Arial',22,'normal'))
        else:
            pencolor(eval(i))
            draw(eval(i))
        t.fd(35)   # 绘制完单个数码管之后,海龟进入下一个数码管的第一个画笔

最后 删去 examinate()函数
修改之后的全部代码:

import turtle as t
from time import localtime,strftime
def seperate():  # 这一段函数是给数码管中每一笔画间距
    t.fd(6)
def penupordown(de): # 定制每一笔画 函数
    if de:
        t.pendown()
    t.fd(34)
    t.penup()
    seperate()
    t.right(90)
    seperate() 
def draw(digit):
    penupordown(True) if digit in [2,3,4,5,6,8,9] else penupordown(False)
    penupordown(True) if digit in [0,3,4,5,6,7,8,9] else penupordown(False)
    penupordown(True) if digit in [0,2,3,5,6,8,9] else penupordown(False)
    penupordown(True) if digit in [0,1,2,6,8] else penupordown(False)
    t.fd(-6)		# 在第四和第五画笔之间我们需要重新调整画笔走向
    t.left(90)
    seperate()
    penupordown(True) if digit in [0,1,4,5,6,8,9] else penupordown(False)
    penupordown(True) if digit in [0,2,3,5,6,7,8,9] else penupordown(False)
    penupordown(True) if digit in [0,2,3,4,7,8,9] else penupordown(False)
    t.seth(0) 	 # 单个数码管绘制完成之后调整海龟前进方向
def inputdata(data): 	# 读入数据,利用for ..in 循环读入数据
    for i in data:	
        if i == '!':  # font 是用来定义字体的大小和形状的,至于'Arial'感兴趣的同学可以自己查一下
    	    t.write('年',font=('Arial',22,'normal'))
        elif i == '@':
    	    t.write('月',font=('Arial',22,'normal'))
        elif i == '#':
    	    t.write('日',font=('Arial',22,'normal'))
        elif i == '$':
    	    t.write('时',font=('Arial',22,'normal'))
        elif i == '^':
    	    t.write('分',font=('Arial',22,'normal'))
        elif i == '&':
    	    t.write('秒',font=('Arial',22,'normal'))
        else:
            pencolor(eval(i))
            draw(eval(i))
        t.fd(35)   # 绘制完单个数码管之后,海龟进入下一个数码管的第一个画笔
def pencolor(n):  # 画笔颜色控制函数
    colorlist = ["tomato",'pink','cyan','black','magenta','brown','green',\
                 'blue','yellow','purple']
    t.pencolor(colorlist[n])
def main():  #定义主函数
    t.setup(1350,400)
    t.up()
    t.speed(20)
    t.goto(-600,25)
    t.pensize(5)
    Data = list(strftime("%Y!%m@%d#%H$%M^%S&",localtime()))
    inputdata(Data)
    t.hideturtle()   # 最后把海龟藏起
main()
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用Python绘制七段数码管显示a-f的代码: ```python import turtle # 设置画笔大小和速度 turtle.pensize(5) turtle.speed(10) # 绘制a turtle.penup() turtle.goto(-200, 100) turtle.pendown() turtle.right(60) turtle.forward(100) turtle.right(120) turtle.forward(100) turtle.right(180) turtle.forward(50) turtle.right(60) turtle.forward(50) turtle.right(60) turtle.forward(50) turtle.right(180) turtle.forward(100) turtle.right(60) # 绘制b turtle.penup() turtle.goto(-50, 100) turtle.pendown() turtle.forward(100) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(100) turtle.right(90) # 绘制c turtle.penup() turtle.goto(100, 100) turtle.pendown() turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(180) turtle.forward(100) turtle.right(90) turtle.forward(50) turtle.right(90) # 绘制d turtle.penup() turtle.goto(250, 100) turtle.pendown() turtle.right(180) turtle.forward(50) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(100) turtle.right(90) # 绘制e turtle.penup() turtle.goto(-200, -50) turtle.pendown() turtle.right(180) turtle.forward(100) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(100) turtle.right(90) # 绘制f turtle.penup() turtle.goto(-50, -50) turtle.pendown() turtle.right(180) turtle.forward(50) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) # 隐藏画笔 turtle.hideturtle() turtle.done() ``` 运行上述代码后,将在屏幕上绘制出a-f的七段数码管效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值