基于turtle库的七段数码管绘制
·文章结构
>样例及概览
>函数框架分析
>功能发展
·样例及概览
七段数码管,是信号灯、电子表等很多设备的显示形式。而利用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库的七段数码管绘制的更多相关文章
- 使用Python的turtle库实现七段数码管绘制
七段数码管绘制:七段数码管是由7段数码管拼接而成,每段有亮或不亮两种情况,改进的七段数码管还包括一个小数点位置.七段数码管能形成2=128种状态,其中部分状态能够显示易于人们理解的数字或字母含义.因此 ...
- #Python语言程序设计Demo - 七段数码管绘制
Python设计七段数码管绘制 单个数码管效果: 设计总数码管效果: Pyhton 编程: #七段数码管绘制 import turtle as t import time as T def drawG ...
- 【Python】七段数码管绘制问题
问题分析: 绘制路径: 代码: import turtle #引入绘图库turtle def drawLine(draw): #绘制单段数码管 turtle.pendown() if draw els ...
- Python入门基础:七段数码管绘制
1.在学习Python的过程中,运用所学的一些基础知识,进行一些简单的编程,可以收获很多乐趣.在生活中,LED灯无处不在,荧幕显示的广告词,给我们呈现出动态的视觉效果.下面,则以最简单的显示日期为例, ...
- Python:turtle库的使用及图形绘制
目录 一.绘制一个八边形 二.绘制一个八角图形 三.简述问题 四.循环程序设计 五.绘制一个自己喜欢的图形 一.绘制一个八边形 使用turtle库,绘制一个八边形 代码: from turtle im ...
- Python学习之turtle库和蟒蛇绘制程序
Python的函数库 Python语言与C语言Java类似,可以大量使用外部函数库包含在安装包中的函数库:. 比如math, random, turtle等其他函数库,其他函数库用户根据代码需求自行安 ...
- python turtle库的几个小demo
一.先上图 一个同切圆和五角星 上代码 import turtle #同切圆 turtle.pensize(2) turtle.circle(10) turtle.circle(40) turtle. ...
- Python中turtle库的使用
Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...
- python 利用turtle库绘制七段数码管的方式,绘制当前事件(时分秒00:00:00)
# coding:utf-8# 绘制七段数码管,显示当前时间import timeimport turtle as tt # 绘制间隔def drawGap(): tt.penup() tt.fd(3 ...
随机推荐
- 目前写出的bug
要检测p->next 与p都不=NULL while(p->next!=NULL &&p!=NULL) 会导致访问access NULL pointer的runtime错误 ...
- Get The Treasury【HDU-3642】【扫描线】
题目链接 题目给出的是N个体积块,问的是有多少体积重叠了3次及以上? 那么就是怎么处理体积这样子的问题了,看到Z的种类不多的时候,就想着从Z离散化的角度去考虑这个问题了,然后就是怎样子去处理面积了,这 ...
- win8.1安装Python提示缺失api-ms-win-crt-runtime-l1-1-0.dll问题
Windows下安装python成功之后,运行python,提示缺少api-ms-win-crt-runtime-l1-1-0.dll.很显然,安装上这个dll文件不就可以了吗.于是就开始百度,找资料 ...
- windows修改docker的默认存放位置
docker默认存储到c盘,我需要移动到其他盘. 参考了网上很多资料,结果要么移动不了,要么重启docker就回到c盘了. 最后参考docker的官方论坛,找到了解决方案.https://forums ...
- linux+Apache开启伪静态配置
linux+Apache伪静态配置 一.环境准备:CentOS Linux release 7.4.1708 (Core)1.配置源[root@localhost ~]#yum install -y ...
- android Manifest.xml 文件详解
- go中变量的使用
// 变量的使用 package main import "fmt" // 定义多个全局变量 var ( globalName = "Jackie" globa ...
- 想实现网页滚动一定距离底部弹出div
<script type="text/javascript"> $(window).scroll(function () { if ($(this).scrollTop ...
- HWDB手写汉字识别 - CNN
MARK Caffe 的 googleNet近似模型,识别HWDB汉字200类 准确率96.3
- python 环境安装说明
一. 安装 python-3.6.5-amd64.exe 1. 安装完成后,设置系统环境变量 Path E:\Programs\Python\Python36; E:\Program ...