使用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 ...
随机推荐
- Ubuntu安装Oracle时出现乱码,及其他安装错误
只要在运行./runInstaller之前先运行下以下命令就ok了: export LANG=en_US #设置运行语言 编译错误 ln -s /usr/lib/i386-linux-gnu/libp ...
- vs 默认的INC和LIB
用户环境变量添加 INCLUDE=C:\inc;c:\inc2 LIB=c:\lib 编辑文件C:\Users\Administrator\AppData\Local\Microsoft\MSBuil ...
- TF卡和SD卡的区别
小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡( ...
- 用Java操纵HBase数据库(新建表,插入,删除,查找)
java代码如下: package db.insert; /* * 创建一个students表,并进行相关操作 */ import java.io.IOException; import java.i ...
- 关于DLL文件和EXE文件不在同一目录下的设置【转】
https://www.cnblogs.com/chaosimple/archive/2012/08/13/2636181.html 关于DLL文件和EXE文件不在同一目录下的设置 在开发程序结束后, ...
- Android数据展示之ListView
Android应用程序中经常需要使用ListView展示数据,一个ListView通常将数据填充到布局文件中,在填充的过程中需要知道连接数据与ListView的适配器.适配器是一个连接数据和Adapt ...
- WebChromeClient 简介 API 案例
代码位置:https://github.com/baiqiantao/WebViewTest.git 设计思想理解 在WebView的设计中,不是什么事都要WebView类干的,有相当多的杂事是分给其 ...
- jquery选择器用法笔记(第二部分)
今天继续讲讲jquery选择器的更多用法,希望能给大家带来帮助. 9.$("ul li:eq(3)") -- 列表中的第四个元素(index 从 0 开始) :eq() 选择器 ...
- IOS之NSFileManager 和NSFileHandle
在现阶手机app的临时缓存文件渐渐增多,在app开发中对于移动设备文件的操作越来越多,我们IOS中对于文件的操作主要涉及两个类NSFileManager 和NSFileHandle,下面我们就看看如何 ...
- (转)Unity3D命令行Build
转自:http://www.cnblogs.com/gameprogram/archive/2012/05/11/2496303.html 本来是没想用这个命令行Build方式,可惜电脑不知道怎么的就 ...
