·文章结构
  >样例及概览
  >函数框架分析
  >功能发展
·样例及概览
  七段数码管,是信号灯、电子表等很多设备的显示形式。而利用python的turtle库,我们也可以模拟着写出一个动态生成的七段数码管,用来显示日期、时间等等任何可以通过数字展示的东西。
  下面的例子展示了一个基本的日期显示功能。
# 日历(自定义日期、七段电子管实现)
import turtle as t
#前进步长

FORWARD = 40
#间隔步长

INTERVAL = 20
def drawLine(k):
t.pendown() if k else t.penup()
t.fd(FORWARD)
t.right(90)
return
def drawNum(k):
  #观察各字符在数码管中的展现形式,一共七条线,而有些数字在其中某条线时不必绘制
drawLine(True) if k in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if k in [1,3,4,5,6,7,8,9,0] else drawLine(False)
drawLine(True) if k in [2,3,5,6,8,9,0] else drawLine(False)
drawLine(True) if k in [2,6,8,0] else drawLine(False)
t.left(90)
drawLine(True) if k in [4,5,6,8,9,0] else drawLine(False)
drawLine(True) if k in [2,3,5,6,7,8,9,0] else drawLine(False)
drawLine(True) if k in [1,2,3,4,7,8,9,0] else drawLine(False)
t.left(180)
t.penup()
t.fd(INTERVAL)
t.pendown()
return
def main():
inf = "20190413"
#init
t.setup(800,400,0,0)
t.pensize(10)
t.pencolor("red")
t.penup()
t.seth(180)
t.fd(320)
t.pendown()
t.seth(0)
#control color and show character
cnt = 0
for i in inf:
cnt += 1
drawNum(eval(i))
if cnt == 4:
#set character with color
t.pencolor("black")
t.write("年")
t.penup()
t.fd(INTERVAL)
t.pendown()
#recover and transform color
t.pencolor("green")
elif cnt == 6:
#set character with color
t.pencolor("black")
t.write("月")
t.penup()
t.fd(INTERVAL)
t.pendown()
#recover and transform color
t.pencolor("pink")
elif cnt == 8:
#set character with color
t.pencolor("black")
t.write("日")
t.done()
return main()
·函数框架分析
  运用计算思维,我们很容易想出:只要能实现一个数字的七段数码管绘制,那么我们就可以通过代码复用将其扩展至任意个数的七段数码管绘制。
  「此时,我们将总任务拆封成了两个小任务:1)单个数字七段数码管绘制。2)重复多次用以绘制多个数字。」
  针对2),我们简单构想,只需要一个字符串用来存放数字,然后用循环来遍历它,并将current value穿到1)所对应的方法中去就好了
  针对1),我们再次将问题分治。
  「新1)画出七段数码管其中的一段,即一条线。新2)重复七次用以绘制七段数码管。」
  针对新2),我们首先要把七段数码管按一定顺序分解为七笔。

  针对新1),我们可以通过penup()、pendown()函数来控制是否画出这一笔。而在除了第四步后每画过一笔,我们就让其右转90度,为画下一笔作准备。

  完成以上分析后,我们就已经解出了这个问题,只需要用代码实现它。

·发展

  在主函数main()中,我们可以将预定义的字符串inf更改为一个自定义模块。

  在主函数main()中,我们可已修改年、月、日为时、分、秒,用以显示时刻。

  引入time库来实时获取日期及时间信息。

  在主函数main()的for循环中设置了不同数字所对应的颜色,可以自由更改为其他的。  

												

基于turtle库的七段数码管绘制的更多相关文章

  1. 使用Python的turtle库实现七段数码管绘制

    七段数码管绘制:七段数码管是由7段数码管拼接而成,每段有亮或不亮两种情况,改进的七段数码管还包括一个小数点位置.七段数码管能形成2=128种状态,其中部分状态能够显示易于人们理解的数字或字母含义.因此 ...

  2. #Python语言程序设计Demo - 七段数码管绘制

    Python设计七段数码管绘制 单个数码管效果: 设计总数码管效果: Pyhton 编程: #七段数码管绘制 import turtle as t import time as T def drawG ...

  3. 【Python】七段数码管绘制问题

    问题分析: 绘制路径: 代码: import turtle #引入绘图库turtle def drawLine(draw): #绘制单段数码管 turtle.pendown() if draw els ...

  4. Python入门基础:七段数码管绘制

    1.在学习Python的过程中,运用所学的一些基础知识,进行一些简单的编程,可以收获很多乐趣.在生活中,LED灯无处不在,荧幕显示的广告词,给我们呈现出动态的视觉效果.下面,则以最简单的显示日期为例, ...

  5. Python:turtle库的使用及图形绘制

    目录 一.绘制一个八边形 二.绘制一个八角图形 三.简述问题 四.循环程序设计 五.绘制一个自己喜欢的图形 一.绘制一个八边形 使用turtle库,绘制一个八边形 代码: from turtle im ...

  6. Python学习之turtle库和蟒蛇绘制程序

    Python的函数库 Python语言与C语言Java类似,可以大量使用外部函数库包含在安装包中的函数库:. 比如math, random, turtle等其他函数库,其他函数库用户根据代码需求自行安 ...

  7. python turtle库的几个小demo

    一.先上图 一个同切圆和五角星 上代码 import turtle #同切圆 turtle.pensize(2) turtle.circle(10) turtle.circle(40) turtle. ...

  8. Python中turtle库的使用

    Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...

  9. python 利用turtle库绘制七段数码管的方式,绘制当前事件(时分秒00:00:00)

    # coding:utf-8# 绘制七段数码管,显示当前时间import timeimport turtle as tt # 绘制间隔def drawGap(): tt.penup() tt.fd(3 ...

随机推荐

  1. Vue-随笔小记

    注:本文属个人随笔记录,如有错误请大家多多指正 1.vue.nextTick([callback,context]) 参数: {function}[context] {Object}[context] ...

  2. crontab 使用

    1. 安装,结构 yum install cronie 结构: * * * * * [分钟] [小时] [每月的某一天] [每年的某一月] [每周的某一天] 2.命令 1,添加或更新crontab中的 ...

  3. ccf 201809-3 元素选择器

    一.思路: 1.将结构化文档的每一行处理成一个节点(可定义一个结构体,成员包含标签tag.属性id.层级level.祖先所在行数father). 2.然后整个结构化文档就成了一个树形结构,可从任一节点 ...

  4. upc组队赛15 Lattice's basics in digital electronics【模拟】

    Lattice's basics in digital electronics 题目链接 题目描述 LATTICE is learning Digital Electronic Technology. ...

  5. nginx 设置http访问ftp目录内文件

    设置 nginx “403 Forbidden” 错误的原因及解决办法 原文链接 https://www.cnblogs.com/chenzc/p/4461130.html nginx 的 403 F ...

  6. 百度网盘不限速-Motrix

    目录: Windows 下使用  Motrix Mac 下使用 BaiduNetdiskPlugin-macOS Mac 下使用 Motrix Windows 系统  Motrix 1. Google ...

  7. ELK-7.3安装部署

    原文 ELK-7.3安装部署 前沿 1.什么是ELK? ELK是由Elasticsearch.Logstash.Kibana 三个开源软件的组成的一个组合体 不懂自行查阅 https://www.el ...

  8. git pull的时候发生冲突的解决方法之“error: Your local changes to the following files would be overwritten by merge”

    今天在使用git pull 命令的时候发生了以下报错 目前git的报错提示已经相关友好了,可以直观的发现,这里可以通过commit的方式解决这个冲突问题,但还是想看看其他大佬是怎么解决这类问题的 在网 ...

  9. CentOS使用手册(一)

    前言:全栈开发当然少不了服务器的配置与维护,本次打算参考网上资料和大地老师的视频写一个CentOS系列的手册,方便日后查阅. 本篇目录: 1.虚拟机上的CentOS基本安装流程 2.远程连接Linux ...

  10. postmortem报告【第二组】

    一.alpha阶段的经验教训 1.针对 进度规划不到位,任务完成速度慢 的问题,引入teambition规范任务管理,每周组会验收上一周任务,发布下一周任务,对各组员是否完成任务以及完成质量进行评价. ...