[Python] 纯文本查看 复制代码
# 改进版的七数码
from datetime import *
from turtle import *
def draw_gap():
up()
fd(5)
def drawline(draw): # 落笔划一横然后拐弯
# pd() if draw else up() # 难以理解
# draw = 1 下面是正解
draw_gap()
if draw:
pd()
else:
up()
fd(40)
draw_gap()
right(90) # done()
def draw_seven(num): # 根据需要绘制的数字落笔
# 画 下 第一笔 右横
if num in [2, 3, 4, 5, 6, 8, 9]:
drawline(1)
else:
drawline(0)
# 画 下 第二笔 下竖
if num in [0, 1, 3, 4, 5, 6, 7, 8, 9]:
drawline(1)
else:
drawline(0)
# 画 下 第三笔 左横
if num in [0, 2, 3, 5, 6, 8, 9]:
drawline(1)
else:
drawline(0)
# 画 下 第四笔 上竖
if num in [0, 2, 6, 8]:
drawline(1)
else:
drawline(0)
left(90) # 画完最后一笔 笔向右转了一下,回转一下,让笔指向正上
# 画 上 第一笔 上竖
if num in [0, 4, 5, 6, 8, 9]:
drawline(1)
else:
drawline(0)
# 画 上 第二笔 右横
if num in [0, 2, 3, 5, 6, 7, 8, 9]:
drawline(1)
else:
drawline(0)
# 画 上 第三笔 下竖
if num in [0, 1, 2, 3, 4, 7, 8, 9]:
drawline(1)
else:
drawline(0)
left(180) # 画完一个数字后,笔尖向右
up() # 起笔
fd(20) # 向右移动一点,数字与数字拉开间隔
def draw_date(data): # 获得要输出的数字
pencolor("red")
for i in data:
if i == 'a':
write('年', font=("Arial", 18, "normal"))
fd(45)
elif i == 'b':
write('月', font=("Arial", 18, "normal"))
fd(45)
elif i == 'c':
write('日', font=("Arial", 18, "normal"))
fd(45)
elif i == 'd':
write('时', font=("Arial", 18, "normal"))
fd(45)
elif i == 'e':
write('分', font=("Arial", 18, "normal"))
fd(45)
elif i == 'f':
write('秒', font=("Arial", 18, "normal"))
fd(-1050)
right(90)
fd(150)
write('慕鸢在上晚自习的时候水论坛', font=("Arial", 18, "normal"))
else:
draw_seven(eval(i)) # 遍历输入的字符串 转化为一个一个的数字
def main():
setup(1500, 400, 100, 100)
up()
speed(10)
fd(-600)
pensize(5)
draw_date(datetime.now().strftime('%ya%mb%dc%Hd%Me%Sf'))
# draw_date('20210926')
hideturtle()
done()
main()