使用Python的turtle库实现七段数码管绘制
七段数码管绘制:
七段数码管是由7段数码管拼接而成,每段有亮或不亮两种情况,改进的七段数码管还包括一个小数点位置。
七段数码管能形成2^7=128种状态,其中部分状态能够显示易于人们理解的数字或字母含义。因此被广泛使用。
使用turtle库并使用函数封装绘制七段数码管,显示当前系统日期和时间。
该问题的IPO描述如下:
输入:当前日期的数字形式。
处理:根据每个数字绘制七段数码管表示。
输出:绘制当前日期的七段数码管表示。
代码如下:
# DrawSevenSegDisplay.py
import turtle, datetime
def drawLine1(draw): # 绘制单段数码管
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
turtle.right(90)
def drawDigit1(digit): # 根据数字绘制七段数码管
drawLine1(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine1(False)
drawLine1(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine1(False)
drawLine1(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine1(False)
drawLine1(True) if digit in [0, 2, 6, 8] else drawLine1(False)
turtle.left(90)
drawLine1(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine1(False)
drawLine1(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine1(False)
drawLine1(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine1(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawDate1(date): # 获得要输出的数字
for i in date:
drawDigit1(eval(i)) # 注意: 通过eval()函数将数字变为整数 def main1():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate1(datetime.datetime.now().strftime('%Y%m%d'))
turtle.hideturtle() main1()
程序运行结果:

带有“年、月、日”的程序代码如下:
#------another:
#DrawSevenSegDisplay.py
import turtle, datetime
def drawGap(): #绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawLine2(draw): #绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDigit2(d): #根据数字绘制七段数码管
drawLine2(True) if d in [2,3,4,5,6,8,9] else drawLine2(False)
drawLine2(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine2(False)
drawLine2(True) if d in [0,2,3,5,6,8,9] else drawLine2(False)
drawLine2(True) if d in [0,2,6,8] else drawLine2(False)
turtle.left(90)
drawLine2(True) if d in [0,4,5,6,8,9] else drawLine2(False)
drawLine2(True) if d in [0,2,3,5,6,7,8,9] else drawLine2(False)
drawLine2(True) if d in [0,1,2,3,4,7,8,9] else drawLine2(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawDate2(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:
drawDigit2(eval(i))
def main2():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-350)
turtle.pensize(5)
drawDate2(datetime.datetime.now().strftime('%Y-%m=%d+'))
turtle.hideturtle()
main2()
程序运行结果:
使用Python的turtle库实现七段数码管绘制的更多相关文章
- 基于turtle库的七段数码管绘制
·文章结构 >样例及概览 >函数框架分析 >功能发展·样例及概览 七段数码管,是信号灯.电子表等很多设备的显示形式.而利用python的turtle库,我们也可以模拟着写出一个动态生 ...
- Python:turtle库的使用及图形绘制
目录 一.绘制一个八边形 二.绘制一个八角图形 三.简述问题 四.循环程序设计 五.绘制一个自己喜欢的图形 一.绘制一个八边形 使用turtle库,绘制一个八边形 代码: from turtle im ...
- #Python语言程序设计Demo - 七段数码管绘制
Python设计七段数码管绘制 单个数码管效果: 设计总数码管效果: Pyhton 编程: #七段数码管绘制 import turtle as t import time as T def drawG ...
- Python使用turtle库与random库绘制雪花
记录Python使用turtle库与random库绘制雪花,代码非常容易理解,画着玩玩还是可以的. 完整代码如下: 效果图如下:
- Python之turtle库-小猪佩奇
Python之turtle库-小猪佩奇 #!/usr/bin/env python # coding: utf-8 # Python turtle库官方文档:https://docs.python.o ...
- 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 ...
- Python入门基础:七段数码管绘制
1.在学习Python的过程中,运用所学的一些基础知识,进行一些简单的编程,可以收获很多乐趣.在生活中,LED灯无处不在,荧幕显示的广告词,给我们呈现出动态的视觉效果.下面,则以最简单的显示日期为例, ...
- 【Python】七段数码管绘制问题
问题分析: 绘制路径: 代码: import turtle #引入绘图库turtle def drawLine(draw): #绘制单段数码管 turtle.pendown() if draw els ...
随机推荐
- JQuery文件上传及以Base64字符串形式呈现图片
一:上传之 首先,你必然得有一个 file input,如下: <td> <img id="imgGif" style="display: no ...
- python垃圾回收杂谈
当创建对象时Python立即向操作系统请求内存.每当对象的引用数减为0,Python垃圾回收器立刻挺身而出,立即将其释放,把内存还给操作系统.在Python中,每个对象都保存了一个称为引用计数的整数值 ...
- iOS:NSDate的主要几种时间形式
NSDate:时间的获取和操作 1.获取当前时间 //获取当前日期 NSDate *date = sender.date; NSLog(@"%@",date); 2.将date转换 ...
- 基于jQuery的Cookie操作插件--简单而又没有兼容性问题!
在网页客户端,我们经常会遇到读取或者设置cookie的情况,如果用纯生的js我们可能会遇到一些兼容性带来的麻烦,这里给大家介绍一个比较实用jquery操作cookie的插件,插件的源代码如下: 1 2 ...
- 部署项目Nginx+Tornado+Supervisor
http://www.jianshu.com/p/9bebb99368ea Tornado Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻 ...
- .7z.001,.7z.002这样的文件如何解压
1 如图所示,压缩分卷没有显示关联的软件来打开,Winrar右击也无法解压 2 可以使用7-ZIP软件打开该文件,然后选择提取(相当于Winrar的解压),然后选择提取路径,默认是同一个文件夹,点击确 ...
- Discuz常见大问题-如何DIY一个独立页面
首先参考Discuz如何自定义单个页面的文章,确保你已经能做一个"关于我们"这种纯HTML静态页面(只有文字和静态图片描述).其次参考下面的文件修改原来的htm文件 注意我用红色标 ...
- 修复损坏的 shapefile
一.SHP文件 Shapefile文件(简称SHP)作为ESRI一种经典的数据格式,被很多其他软件所支持,如CAD.MapGIS等,虽然也有一些限制(如无法进行拓扑分析.字段长度为10个字符等),但其 ...
- 浅析Android线程模型一 --- 转
摘要:随着中国移动在8月份相继发布基于Google Android的OPhone平台和手机网上应用商店Mobile Market,以及各大手机生产厂商在2009年北京国际通信展?上展出了各自基于And ...
- CLR 之 内容概述
第 I 部分 CLR 基础 第 1 章 CLR的执行模型 第 2 章 生成.打包.部署和管理应用程序及类型 第 3 章 共享程序集和强命名程序集 第 II 部分 设计类型 第 4 章 类型基础 第 5 ...
