七段电子数码管时间绘制.py

本文介绍如何使用Python的turtle库,通过编写代码实现七段数码管显示功能,可以定制显示指定日期,如生日日期,通过绘制单段管和随机颜色来呈现动态效果。
摘要由CSDN通过智能技术生成

{
 "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
}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值