七段数码管绘制

发布时间 2023-11-22 18:03:00作者: 鑺鑵

 

 

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