Python 七段数码管显示当前时间
import turtleimport timedef drawGap():turtle.penup()turtle.forward(6)def drawLine(draw):drawGap()if draw:turtle.pendown()else:turtle.penup()turtle.forward(60)drawGap()turtle.right(90)def dra.
·
import turtle,time
def drawGap(): #定义一个空行函数
turtle.penup()
turtle.forward(6)
def drawLine(draw): #定义数码管一个管的绘制函数
drawGap()
if draw:
turtle.pendown()
else:
turtle.penup()
turtle.forward(60)
drawGap()
turtle.right(90)
def drawDigit(digit): #定义一个数字的绘制函数,if-else使用了两种方法。
#七段数码管第一段管
if digit in [2,3,4,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#七段数码管第二段管
if digit in [0,1,3,4,5,6,7,8,9]:
drawLine(True)
else:
drawLine(False)
#七段数码管第三段管
if digit in [0,2,3,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#七段数码管第四段管
if digit in [0,2,6,8]:
drawLine(True)
else:
drawLine(False)
turtle.left(90)
# 七段数码管第五段管
drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
# 七段数码管第六段管
drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
# 七段数码管第七段管
drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.forward(30)
def drawDate(date): #定义绘制函数,通过格式化时间,简化年月日汉子的输出。
for i in date:
turtle.pencolor("red")
turtle.speed(9)
if i=="-":
turtle.pencolor("blue")
turtle.write("年",font=("Arial",22,"normal"))
turtle.forward(40)
elif i=="=":
turtle.pencolor("green")
turtle.write("月",font=("Arial",22,"normal"))
turtle.forward(40)
elif i == "+":
turtle.pencolor("yellow")
turtle.write("日", font=("Arial", 22, "normal"))
else:
drawDigit(eval(i))
def main(num): #主函数
turtle.setup(1000,350,200,200)
turtle.pensize(6)
turtle.penup()
turtle.forward(-450)
drawDate(num)
turtle.hideturtle()
turtle.done()
def getTime(): #定义时间获取函数
t = time.gmtime()
tt=time.strftime("%Y-%m=%d+", t)
return tt
num=getTime()
main(num)
输出:

继续优化上面的代码,减少复杂的地方,将显示当前的时间范围扩大到时分秒,而且是本地时间,代码如下:
import turtle
import time
def drawGap(): #设置一个画笔抬起,使得每段管之间产生间隔
turtle.penup()
turtle.forward(5)
def drawLine(draw):
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.forward(40)
drawGap()
turtle.right(90)
def drawDigit(digit):
drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,8,9]else drawLine(False)
drawLine(True) if digit in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.forward(20)
def drawDate(date):
for i in date:
turtle.pencolor("red")
turtle.speed(10)
if i=="-":
turtle.write("年",font=("Arial",30,"normal"))
turtle.forward(40)
elif i=="=":
turtle.write("月",font=("Arial",30,"normal"))
turtle.forward(40)
elif i == "+":
turtle.write("日", font=("Arial", 30, "normal"))
elif i == "!":
turtle.penup()
turtle.forward(100)
elif i == "@":
turtle.write("时", font=("Arial", 30, "normal"))
turtle.forward(40)
elif i == "#":
turtle.write("分", font=("Arial", 30, "normal"))
turtle.forward(40)
elif i == "¥":
turtle.write("秒", font=("Arial", 30, "normal"))
else:
drawDigit(eval(i))
def main(num):
turtle.setup(1400,300,200,200)
turtle.pensize(5)
turtle.penup()
turtle.forward(-650)
drawDate(num)
turtle.hideturtle()
turtle.done()
def getTime():
t = time.localtime() #获取本地时间
tt=time.strftime("%Y-%m=%d!%H@%M#%S¥", t) #格式化本地时间输出
return tt
num=getTime()
main(num)
输出:

更多推荐


所有评论(0)