七段代码管

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()

 

posted @ 2023-11-19 23:37  lin_1  阅读(48)  评论(0)    收藏  举报