首页 > 其他分享 >代码管

代码管

时间:2023-12-11 23:00:39浏览次数:21  
标签:turtle draw 代码 else line month day

import turtle,datetime
#  定义一个,用于绘制代码管的间隙
def  draw_gap():
    turtle.penup()
    turtle.forward(5)

#  定义一个函数,用于绘制一段代码管,这里传入的参数输一个bool类型
def draw_line(draw):
    draw_gap()
    turtle.pendown() if draw else turtle.penup()
    turtle.forward(40)
    draw_gap()
    turtle.right(90)

#  定义一个函数,用于绘制一个数字,也就是一个田子的代码管
def draw_digit(number):
    #  一开始是画田字中间的那一横
    if number in  [2, 3, 4, 5, 6, 8, 9]:
        draw_line(True)
    else:
        draw_line(False)
    #  画田字下右面的那一横
    draw_line(True) if number in [0, 1, 3, 4, 5, 6, 7, 8, 9]else draw_line(False)
    #  绘制最下面的一横
    draw_line(True) if number in [0, 2, 3, 5, 6, 8, 9] else draw_line(False)
    # 日左下角那一竖
    draw_line(True) if number in [0, 2, 6, 8] else draw_line(False)
    #  这个时候要调整海归的指向
    turtle.left(90)
    #  绘制日字左上角的那一横
    draw_line(True) if number in [0,4,5,6,8,9] else draw_line(False)
    draw_line(True) if number in [0,2,3,5,6,7,8,9] else draw_line(False)
    draw_line(True) if number in [0,1,2,3,4,7,8,9] else draw_line(False)
    turtle.right(180)
    #  要记得先提笔,再改变海归的位置
    turtle.penup()
    turtle.forward(20)

#  定义一个函数,用于判断今年是闰年还是平年,再得出今天是今年的第几天
def get_day_count(year,month,day):
    #  闰年
    if (year%4==0 and year%10==0) or year%400==0:
        month_day = [0, 31, 60, 91, 121, 152, 182, 213, 244, 247, 305, 335]
        day_count=month_day[month-1]+day
        return day_count
    else:
        month_day = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
        day_count=month_day[month-1]+day
        return day_count

date=datetime.datetime.now().strftime("%Y-%m-%d")
list1=date.split('-')
year=eval(list1[0])
month=eval(list1[1])
day=eval(list1[2])
today=get_day_count(year, month, day)
result=(today-1)%7
list2=["星期日",'星期一','星期二','星期三','星期四','星期五','星期六']
week=list2[result]


#  定义一个函数,绘制最终的代码管
def draw_date(date):
    turtle.pencolor('red')
    for i in date:
        if  i=='-':
            turtle.write('年',font=("Arial",36,'normal'))
            #  海归每一次画完图像之后,就停留在文字的左下角,要让海归向前移动
            turtle.fd(50)
        elif i == '=':
            turtle.write('月', font=("Arial", 36, "normal"))
            turtle.pencolor("blue")
            turtle.fd(50)
        elif i == '+':
            turtle.write('日', font=("Arial", 36, "normal"))
            turtle.pencolor("yellow")
            turtle.fd(50)
        elif i == '*':
            turtle.write('时', font=("Arial", 36, "normal"))
            turtle.pencolor("purple")
            turtle.fd(50)
        elif i == '/':
            turtle.write('分', font=("Arial", 36, "normal"))
            turtle.pencolor("gold")
            turtle.fd(50)
        elif i == '$':
            turtle.write('秒', font=("Arial", 36, "normal"))
        else:
           draw_digit(eval(i))
    turtle.color("green")
    turtle.penup()
    turtle.forward(50)
    turtle.pendown()
    turtle.write(week,font=("Arial", 36, "normal"))



#  定义一个最终的主函数
def main():
    #  设置一下画笔的速度
    turtle.speed(200)
    #  设置画布的大小
    turtle.setup(1500,1500,200,200)
    #  设置画笔的大小
    turtle.pensize(5)
    #  画笔最开始的位置在坐标原点,这里调整一下画笔的起始位置
    turtle.penup()
    turtle.goto(-650,0)
    #  turtle.forward(-650)
    #  开始绘制代码管
    draw_date(datetime.datetime.now().strftime("%Y-%m=%d+%H*%M/%S$"))
    #  绘制完图像之后隐藏海归
    turtle.hideturtle()
    #  绘制完图像之后不选择关闭图像
    turtle.done()

main()

 

标签:turtle,draw,代码,else,line,month,day
From: https://www.cnblogs.com/shangyishui/p/17895802.html

相关文章

  • 《重构:改善既有代码的设计》读书笔记一
    一、重构原则1、重构定义重构:对软件内部结构的一种调整。目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。2、为何重构在开始说为何重构之前,先说一下很多程序员为何不喜欢重构。时间紧,一直忙着实现功能,觉得重构影响效率,而且重构不算绩效,简直吃力不讨好......
  • CPU调度器实现提示:针对特定体系结构代码【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/scheduler/sched-arch.html《CPU调度器实现提示:针对特定体系结构代码》NickPiggin,2005上下文切换运行队列锁定默认情况下,调用switch_to体系结构函数时会锁定运行队列。除非switch_to需要获取运行队列锁,否则通常不会出现问题。这通......
  • 粉碎文件代码 python
    粉碎文件是指将文件彻底删除,使其无法恢复。在计算机领域,我们通常使用编程语言来实现该功能。本文将介绍如何使用Python编程语言来粉碎文件,并提供相应的代码示例。什么是文件粉碎?在计算机中,当我们删除一个文件时,实际上只是将该文件从文件系统的文件目录中删除,并不是真正地将文件内......
  • 出生率持续下降,而低代码,成了!
    低代码这个概念在IT界应该是火了很久,在十年前就有低代码的概念。在最初的时候,我们都是用高级语言或者脚本来开发页面或者应用,比如Java、C++,前端会使用Vue、React等等。但是我们发现经常写的功能或者页面都是重复的,那能否通过更简单高效的方式来避免每次都是重头开发呢?当时业内人士......
  • 【虹科干货】触发器和函数:让代码更接近数据
    文章速览:触发器和函数的基础知识编写语言:从Lua到JavaScript轻松维护应用程序代码数据库事件实时处理如何操作触发器和函数一般来说,应用程序处理业务的逻辑,是将执行代码发送到数据库。因此每次执行函数时,代码都会从客户端流入服务器,结果就是这个过程十分缓慢,甚至会出现代码......
  • idea代码提示插件codota和aixcoder
    idea代码提示插件codota和aixcoder两个插件用了10分钟,毫不犹豫用了aixcoder,aixcoder会在本地安装程序学习我们的代码喜欢进行提示;codota在使用的时候,基本没大有感觉,不知道是不是用的时间太短,基本没有提示,偶尔的一点点提示idea都提示了,而且同样的代码我编写2次也没;aixc......
  • 深度学习面试常用代码:MHA/MQA/GQA/LN/BN/位置编码代码
    深度学习常用代码参考:https://zhuanlan.zhihu.com/p/6505754261.MHA(MultiHeadAttention)代码实现#1.MHA实现importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassScaleDotProductAttention(nn.Module):def__init__(self,):......
  • 代码完形填空学习记录
    1.wxml<swiper circular indicator-dots>#circular使轮播图循环播放 indicator-dots用于显示指示点</swiper>(最后 <block wx:for="{{list}}" wx:key="index">#从list中获得轮播项    <swiper-item>      <image src="{{item.imgUrl}}&qu......
  • 【Android】Android清除本地数据缓存代码
    /**文件名:DataCleanManager.java*描述:主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录*/importjava.io.File;importandroid.content.Context;importandroid.os.Environment;/***本应用数据清除管理器*/public......
  • gitlab+sonarqube实现自动化代码漏洞扫描(centos内网环境安装配置及使用遇到的问题)
    sonarqube可以与源码管理工具gitlab集成,实现提交代码后自动扫描检测代码的相关漏洞。该CI/CD过程大致为:1、研发人员提交源码至gitlab服务器—>2、gitlabrunner执行指定脚本(由项目的.gitlab-ci.yml配置文件指定具体内容,如编译项目、开启代码检测) —>3、sonar-scanner对项目进......