精华内容
下载资源
问答
  • python中七段数码管绘制
    2022-08-25 17:53:58

                  这是中国慕课上北理工的“Python语言程序设计”中的一课,仅此记录一下这段代码。

    #版本一 数字线条连续
    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, 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('20220825')
        turtle.hideturtle()
        turtle.done()
    main()
    
    #版本二 线条不连续    
    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, 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):
        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.fd(40)
            elif i == '+' :
                turtle.write("日", font=("Arial", 18, "normal"))
                turtle.fd(40)
            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()
    

    应用拓展:

    -绘制带小数点的七段数码管

    -带刷新的时间倒计时效果

    -绘制高级的数码管

    更多相关内容
  • 使用七段数码管绘制日期,使用Python语言。代码简单易懂,适合小白,对于数码管的构造内含两种方法。文件为【.py】格式。
  • 根据mooc上的七段数码管绘制及摸索绘制出动态可刷新版七段数码管,小白之举,仅供参考,只放代码,不做赘述,有问题可以评论区探讨。
  • 七段数码管绘制

    2019-02-16 13:02:36
    基于python平台利用现有的turtle库实现七段数码管绘制
  • 博客主页:程序喵正在路上 的博客主页 欢迎关注点赞收藏留言 ...数码管是一种价格便宜、 使用简单的发光电子器件,广泛应用在价格较低的电子类产品,其中,七段数码管最为常用。七段数码管 ( Sev.

    🎶博客主页:程序喵正在路上 的博客主页
    🦋欢迎关注🖱点赞👍收藏🌟留言🐾
    🦄本文由 程序喵正在路上 原创,CSDN首发!
    💖系列专栏:Python学习
    🌠首发时间:2022年5月3日
    ✅如果觉得博主的文章还不错的话,希望小伙伴们三连支持一下哦

    1. 概要

    这是一个绘制七段数码管的实例,用于理解函数及其封装的价值。

    数码管是一种价格便宜、 使用简单的发光电子器件,广泛应用在价格较低的电子类产品中,其中,七段数码管最为常用。七段数码管 ( Seven-segment Indicator ) 由 7 段数码管拼接而成,每段有亮或不亮两种情况,改进型的七段数码管还包括一个小数点位置。
    在这里插入图片描述

    2. 绘制

    本文将通过turtle库函数绘制七段数码管形式的日期信息。该问题的 IPO 描述如下。

    输入:当前日期的数字形式
    处理:根据每个数字绘制七段数码管表示
    输出:绘制当前日期的七段数码管表示

    每个 09 的数字都有相同的七段数码管样式,因此可以通过设计函数复用数字的绘制过程。进一步,每个七段数码管包括 7 个数码管样式,除了数码管位置不同外,绘制风格一致,也可以通过函数复用单个数码段的绘制过程。这里先给出程序的全部代码:

    import turtle, datetime
    
    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, 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))  # 注意: 通过eval()函数将数字变为整数
    
    def main():
        turtle.setup(800, 350, 200, 200)
        turtle.penup()
        turtle.fd(-300)
        turtle.pensize(5)
        drawDate(datetime.datetime.now().strftime('%Y%m%d'))
        turtle.hideturtle()
    
    main()
    

    上述代码义了 drawDigit() 函数,该函数根据输入的数字 d 绘制七段数码管,结合七段数码管结构,每个数码管的绘制采用如下图的顺序。

    绘制起点在数码管中部左侧,无论每段数码管是否被绘制出来,turtle 画笔都按顺序 “画完” 7 个数码管。对于给定数字 d,哪个数码段被绘制出来采用 if-else 语句判断。

    drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
    

    以上面的这行代码为例,代码采用了单行 if-else 语句,这种语句常用于 ifelse 分别只有一行语句的情形,如果将其采用普通 if-else 语句表达如下:

    if digit in [2, 3, 4, 5, 6, 8, 9]:
    	drawLine(True)
    else:
    	drawLine(False)
    

    这行代码根据输入的数字判断是否要绘制七段数码管中间的横线,当需要绘制时,调用绘制函数 drawLine(),参数赋值 True;当不需要绘制时,参数赋值 False。根据 0~9 数字结构,对于 2、3、4、5、6、8、9 这些数字需要绘制,否则不需要绘制。为了使输出样式固定,简化设计,当不需要绘制时,turtle 画笔需要抬起。

    drawLine() 函数根据输出参数的值 (TrueFalse) 决定是否抬起画笔。

    为了使代码模块化更好,代码中定义了 drawDate() 函数和 main() 函数。其中,drawDate() 函数将更长数字分解为单个数字,进一步调用 drawDigit() 分别绘制每个数字。main() 函数将启动窗体大小、设置画笔宽度、设置系统时间等功能封装在一起,但 main() 函数并不体现单一功能,这种封装仅从提高代码可读性角度考虑。

    程序执行结果如下:
    在这里插入图片描述

    3. 改进

    前面的代码给出了最基本的七段数码管绘制程序,从中可以看出,使用函数能大量复用代码,避免相同功能重复编写。此外,函数的好处还体现在对代码的修改方面。能否绘制更有趣的七段数码管呢?

    我们对代码进行改进如下:

    import turtle, datetime
    
    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(d):  		# 根据数字绘制七段数码管
        drawLine(True) if d in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
        drawLine(True) if d in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
        drawLine(True) if d in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
        drawLine(True) if d in [0, 2, 6, 8] else drawLine(False)
        turtle.left(90)
        drawLine(True) if d in [0, 4, 5, 6, 8, 9] else drawLine(False)
        drawLine(True) if d in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
        drawLine(True) if d in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
        turtle.left(180)
        turtle.penup()
        turtle.fd(20)
    
    def drawDate(date):
        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(-350)
        turtle.pensize(5)
        drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))
        turtle.hideturtle()
    
    main()
    

    程序执行结果如下:
    在这里插入图片描述

    4. 计算机的硬件时钟

    计算机断电再次打开后其系统时间往往是准确的,既然已经断电,计算机如何能准确计时呢?

    原来,计算机主板,上有一颗纽扣电池,它负责给硬件时钟供电。这颗纽扣电池往往能用几年,所以,硬件时钟产生的时间都是准确且连续的。计算机的硬件时钟由硬件计时电路组成。当需要使用时间时,操作系统会从硬件时钟中读出时间放入内核给应用软件使用。

    🧸这次的分享就到这里啦,继续加油哦^^
    🍭有出错的地方欢迎在评论区指出来,共同进步,谢谢啦

    展开全文
  • 示例7:七段数码管绘制 基本思路 -步骤1:绘制单个数字对应的数码管-步骤2:获得一串数字,绘制对应的数码管-步骤3:获得当前系统时间,绘制对应的数码管 代码段1: import turtle def drawLine(draw: ...

    示例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()

    举一反三


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

    展开全文
  • 主要介绍了Python绘制七段数码管实例代码,具有一定借鉴价值,需要的朋友可以参考下。
  • 七段数码管绘制数字详解 七段数码管由七段数码管拼接而成,每段有亮或不亮两种情况。这里,先给出程序的全部代码,如下图所示。 基本思路 步骤1:绘制单个数字对应的数码管 步骤2:获得一串数字,绘制对应的数码管 ...

    七段数码管绘制数字详解
    七段数码管由七段数码管拼接而成,每段有亮或不亮两种情况。这里,先给出程序的全部代码,如下图所示。

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

    步骤1:

    首先,七段数码管有一定顺序
    -七段数码管由7个七段数码管是由七个基本线条构成
    -七段数码管可以由固定顺序
    -不同数字显示不同的线条
     我们对其逐一编号得到

     

    如果从左边的位置逐一编号,形成行动序列,覆盖七段线条,不同的线条是否被绘制,便能形成不同的显示数字

     第一行含义为:含有

    数字包括:2,3,4,5,6,8,9

    第二行含义为:含有

    数字包括:0,1,3,4,5,6,7,8,9

    … …

    以此类推,可以绘制出七段数码管

    这里需要特别注意如果画笔顺序相反,情况则另外有所区别。

     

     

    展开全文
  • 如下所示的七段数码管绘制时间(年月日) 二、代码实现 """ 七段数码管绘制年月日时间 """ import turtle import time def drawLine(draw): # 绘制单端数码管 turtle.pendown() if draw else turtle.penup() ...
  • 计算机断电再次打开后其系统时间往往是准确的,既然已经断电,计算机如何能准确计时呢?原来,计算机主板,上有一颗...当需要使用时间时,操作系统会从硬件时钟读出时间放入内核给应用软件使用。httpshttps。......
  • python七段数码管绘制

    2022-04-11 16:25:59
    (本人初学) 在turtle库运行的时候,出现了这些问题想问一下下这具体是什么? (第一张是码
  • 如何利用python绘制七段数码管 绘制七段数码管原理很容易懂,但对于有些小细节如何处理,还是比较纠结的,这里,我是直接分别每一段写出,然后运行的,下面是我的代码 from turtle import * setup(400,400,200,200) ...
  • python 绘图代码,海龟库的使用,包含三代码,可以学会海龟库的一切使用
  • Python实例之七段数码管绘制

    千次阅读 2020-06-30 17:57:02
    七段数码管对应线条: [外链图片转存…(img-HlFaVWMr-1593510007305)] 数码管 首先,绘制单个数字对应的数码管函数: def drawLine(draw): if (draw): turtle.pendown() else: turtle.penup() turtle.fd(40)...
  • 今天小编就为大家分享一篇python实现七段数码管和倒计时效果,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 文章目录简介问题简述核心代码完善代码 简介 数码管是一种价格便宜...通过turtle库函数能够完成七段数码管绘制。本次需要实现的目标是利用七段数码管显示日期信息。 本问题的IPO描述如下所示: 输入:当前的日期数字
  • Python-七段数码管绘制问题分析

    千次阅读 多人点赞 2020-03-27 14:04:12
    用程序绘制七段数码管 解决:使用turtle绘图体系绘制七段数码管 效果如图: 基本讲解; 基本思路 步骤1:绘制单个数字对应的数码管 步骤2:获得一串数字,绘制对应的数码管 步骤3:获得当前系统时间...
  • 步骤一绘制单个数字对应的数码管步骤二获得一串数字,绘制对应的数码管步骤三获得当前系统时间,绘制对应的数码管。七段数码管由七个基本线条组成,可以有固定顺序...基本的七段数码管绘制。七段数码管的基本构造。...
  • Python实例7:七段数码管绘制

    千次阅读 2020-08-05 14:53:29
    Python实例7:七段数码管绘制 基本思路: 绘制单个数字对应的数码管; 获得一串数字,绘制对应的数码管; 获取当前系统时间,绘制对应的数码管; 步骤: 七段数码管由7个基本线条组成;可以有固定顺序;显示不同...
  • 本文旨在记录python学习中七段数码管绘制的一个小例子; 主要实现获取当前日期并用七段数码管进行显示功能。
  • 代码如下: 运行结果如下:
  • python小实例——七段数码管绘制

    千次阅读 2020-12-15 03:10:28
    首先用time库获取系统当前时间然后用turtle库画出来算是对于turtle库内函数的一次实践运用叭import turtle as timport timedef drawGap()://因为是数码管所以线条要有空隙t.penup()t.fd(5)def drawLine(draw)://画一...
  • 采用Spyder4编写,经典的例题七段数码管绘制,比教学内容的绘制年月日进一步精确到了时分秒,并且采用自动捕捉的功能,可以实时的显示当时的准确时间,但是由于Python的原因,该自动刷新时钟可能存在延时和多更新...
  • Python菜鸟------七段数码管绘制

    千次阅读 2020-10-16 23:39:03
    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...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 957
精华内容 382
热门标签
关键字:

python中七段数码管绘制