基于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 ...
随机推荐
- appium常见问题03_appium脚本报错selenium.common.exceptions.WebDriverException
运行appium脚本时报错selenium.common.exceptions.WebDriverException...,如下截图: 该报错说明appium和app的内置chrome版本不一致 [解 ...
- 怎样理解Functor与Monad
1. 复合函数操作符 Prelude> :t (.) (.) :: (b -> c) -> (a -> b) -> a -> c Prelude> (.) ( ...
- 用css3写出的倒三角形
<!DOCTYPE html><html><head><meta charset="gb2312" /><title>无 ...
- C# 笔记 获取程序当前目录
在C#中,我们有以下几种方式获取程序当前目录: Console.WriteLine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssem ...
- docker-compos联合两个容器
使用网络 ' services: web: image: http networks: - myappnet1 worker: image: http networks: - myappnet2 db ...
- 通过URL传参数,然后第二个页面需要获取参数
/** * 方法说明:通过url参数键值名称获取参数的值 * @method getQueryString * @param name 要获取的参数键值 * @return * @remark */ ...
- android ListView列表显示数据
item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...
- WPF 基本图形
一.WPF的基本图形 WPF图形的基类是Shape,所有的wpf图形类都是继承于Shape.Height,Width等决定它所处的面积,位置等,在没有设置图形宽高的情况,坐标位置为所在的容器的坐标,设 ...
- JAVA中的SimpleDateFormat yyyy和YYYY的区别
最近有一个功能是对输入的日期格式化,设计给出的范例是 YYYY-MM-dd HH:mm:ss,于是我简单验证了一下是可以的,然后就这么在手册里写了.然后偶然发现有地方也用yyyy啊,这个到底有神马区别 ...
- Python随笔记录之一
import os import random from copy import deepcopy ''' 读取特定目录下所有的文件夹, 和文件名 ''' def eachDir(path): for ...