{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 七段电子数码管时间绘制"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"## 0.导入库模块\n",
"\n",
"#import turtle #导入turtle库,方法前面不一定要添加库名\n",
"from turtle import * #导入turtle库,方法前面不添加库名\n",
"from random import * #导入random库,方法前面不添加库名\n",
"import time #导入时间库,方法前面一定要添加库名"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"## 1.绘制单段管间隔(绘制空隙)\n",
"\n",
"def drawGap(): #定义绘制间隔函数\n",
" penup() #将画笔设置飞行状态\n",
" fd(5) #画笔向前行走5像素"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"## 2.绘制单段数码管(绘制单段)\n",
"\n",
"def drawLine(draw): #定义绘制单段数码管\n",
" drawGap() #调用绘制间隔函数(函数的调用与函数的嵌套)\n",
" if draw:\n",
" pendown() #如果绘制,将画笔设置成画图状态)\n",
" else:\n",
" penup() #否则将画笔设置为飞行状态\n",
" fd(40) #将画笔前进40像素,以画出一段数码管\n",
" drawGap()\n",
" right(90) #将画笔向右旋转90度"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"## 3.根据数字绘制七段数码管(绘制数字)\n",
"\n",
"\n",
"def drawDigit(digit):\n",
" pencolor('red')\n",
" drawLine(True) if digit in[2,3,4,5,6,8,9] else drawLine(False)\n",
" #运用if推到表达式调用函数,相当于下面if的控制语句,画第1段\n",
" \"\"\"\n",
" if digit in [2,3,4,5,6,8,9]:\n",
" drawLine(True)\n",
" else:\n",
" drawLine(False)\n",
" \"\"\"\n",
" #画第2段\n",
" pencolor(random(),random(),random())\n",
" drawLine(True) if digit in[0,1,3,4,5,6,7,8,9] else drawLine(False)\n",
" \n",
" #画第3段\n",
" pencolor(random(),random(),random())\n",
" drawLine(True) if digit in[0,2,3,5,6,8,9] else drawLine(False)\n",
" \n",
" #画第4段\n",
" pencolor(random(),random(),random())\n",
" drawLine(True) if digit in[0,2,6,8] else drawLine(False)\n",
" \n",
" #画第5段\n",
" left(90)\n",
" pencolor(random(),random(),random())\n",
" drawLine(True) if digit in[0,4,5,6,8,9] else drawLine(False)\n",
" \n",
" #画第6段\n",
" pencolor(random(),random(),random())\n",
" drawLine(True) if digit in[0,2,3,5,6,7,8,9] else drawLine(False)\n",
" \n",
" #画第7段\n",
" pencolor(random(),random(),random())\n",
" drawLine(True) if digit in[0,1,2,3,4,7,8,9] else drawLine(False)\n",
" left(180)\n",
" penup()\n",
" fd(20)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"## 4.获取绘制的时间(先从键盘上获取,再优化到系统时间)\n",
"\n",
"def drawData(date): #定义时间数字函数\n",
" for i in date: #循环打印出时间的每一个数字\n",
" drawDigit(eval(i)) #将字符串转化成数字"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"## 5.定义主函数(设置画笔大小颜色画布等)\n",
"\n",
"def main(): #定义主函数,设置画布画笔属性等\n",
" setup(850,350) #设置画布大小\n",
" bgcolor('black') #设置画布为黑色\n",
" speed(300) #设置海归画笔的速度为300\n",
" penup()\n",
" fd(-350) #设置画笔往左行进350像素\n",
" pensize(5) #设置画笔大小像素为5像素\n",
" drawData(input('请输入您要绘制的生日日期:')) #从键盘上输入绘制的生日日期\n",
" hideturtle() #隐藏海归画笔\n",
" done() #设置时间结束"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"请输入您要绘制的生日日期:20021130\n"
]
}
],
"source": [
"## 6.调用主函数实现效果\n",
"\n",
"if __name__=='__main__':\n",
" main()\n",
" #mainloop() #设置界面循环"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
七段电子数码管时间绘制.py
最新推荐文章于 2024-09-23 21:47:19 发布