用Python绘制的七段数码管来显示数字和字母,以及倒计天数
用Python绘制的七段数码管来显示数字和字母利用Python绘制的七段数码管,实际上是用turtle绘制七段规则排列的直线,通过组合来显示出实际意义上的事物。以嵩天老师留下的课后作业为例:可以显示数字(改进了一下,用input输入)#SevenDigitsDrawV1.pyimport turtledef drawgap():turtle.penup()tu...
文章共5,551字 · 阅读需要大约19分钟
一键AI生成摘要,助你高效阅读
问答
·
用Python绘制的七段数码管来显示数字和字母
利用Python绘制的 七段数码管,实际上是用turtle绘制七段规则排列的直线,通过组合来显示出实际意义上的事物。
以 嵩天老师留下的课后作业为例:
- 可以显示数字(改进了一下,用input输入)
#SevenDigitsDrawV1.py
import turtle
def drawgap():
turtle.penup()
turtle.fd(5)
def drawline(draw):
drawgap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawgap()
turtle.right(90)
def drawdigit(digit):
drawline(True) if digit in ['A','b','d','E','F',2,3,4,5,6,8,9] else drawline(False)
drawline(True) if digit in ['A','b','d',0,1,3,4,5,6,7,8,9] else drawline(False)
drawline(True) if digit in [0,'b','d','E','C',2,3,5,6,8,9] else drawline(False)
drawline(True) if digit in ['A','b','d','E','F','C',0,2,6,8] else drawline(False)
turtle.left(90)
drawline(True) if digit in ['A','b','C','E','F',0,4,5,6,8,9] else drawline(False)
drawline(True) if digit in ['A','C','E','F',0,2,3,5,6,7,8,9] else drawline(False)
drawline(True) if digit in ['A','d',0,1,2,3,4,7,8,9] else drawline(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawdate(date):
for i in date:
drawdigit(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawdate(a)
turtle.hideturtle()
turtle.done()
a= input()
main()
- 可以显示字母
#SevenDigitsDrawV2.py
import turtle
def drawgap():
turtle.penup()
turtle.fd(5)
def drawline(draw):
drawgap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawgap()
turtle.right(90)
def drawdigit(digit):
drawline(True) if digit in ['A','b','d','E','F',2,3,4,5,6,8,9] else drawline(False)
drawline(True) if digit in ['A','b','d',0,1,3,4,5,6,7,8,9] else drawline(False)
drawline(True) if digit in [0,'b','d','E','C',2,3,5,6,8,9] else drawline(False)
drawline(True) if digit in ['A','b','d','E','F','C',0,2,6,8] else drawline(False)
turtle.left(90)
drawline(True) if digit in ['A','b','C','E','F',0,4,5,6,8,9] else drawline(False)
drawline(True) if digit in ['A','C','E','F',0,2,3,5,6,7,8,9] else drawline(False)
drawline(True) if digit in ['A','d',0,1,2,3,4,7,8,9] else drawline(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawdate(date):
for i in date:
drawdigit(i) #如果输入的是数字则改为drawdigit(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawdate(a)
turtle.hideturtle()
turtle.done()
a= input()
main()
- 关于实时时间的显示
#SevenDigitsDrawV3.py
import turtle,time
def drawgap(): #绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawline(draw): #绘制单段数码管
drawgap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(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.fd(20)
def drawdate(date): #data为日期,格式为'%Y-%m=%d+'
turtle.pencolor("red")
for i in date:
if i == '-':
turtle.write('年',font=("Arial",24,"normal"))
turtle.pencolor("green")
turtle.fd(40)
elif i == '=':
turtle.write('月',font=("Arial",24,"normal"))
turtle.pencolor("blue")
turtle.fd(40)
elif i == '+':
turtle.write('日',font=("Arial",24,"normal"))
else:
drawdigit(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawdate(time.strftime('%Y-%m=%d+',time.gmtime()))
turtle.hideturtle()
turtle.done()
main()
- 关于倒计天数的显示(#2020.5.4到现在,修改自CSDN:一只小菜ji)
#SevenDigitsDrawV4倒计时.py
import turtle as t
import time ,datetime
def drawgap(): #绘制数码管间隔
t.penup()
t.fd(5)
def drawline(draw): #绘制单段数码管
drawgap()
t.pendown() if draw else t.penup()
t.fd(40)
drawgap()
t.right(90)
def drawdigit(digit): #根据数字绘制七段数码管
t.write('剩余时间:', font=("Timesnewromans",24,"normal"))
t.pencolor("red")
t.fd(150)
i=0
while i < len(digit):
if digit[i] >= '0' and digit[i] <= '9':
digit1 = eval(digit[i])
drawline(True) if digit1 in [2,3,4,5,6,8,9] else drawline(False)
drawline(True) if digit1 in [0,1,3,4,5,6,7,8,9] else drawline(False)
drawline(True) if digit1 in [0,2,3,5,6,8,9] else drawline(False)
drawline(True) if digit1 in [0,2,6,8] else drawline(False)
t.left(90)
drawline(True) if digit1 in [0,4,5,6,8,9] else drawline(False)
drawline(True) if digit1 in [0,2,3,5,6,7,8,9] else drawline(False)
drawline(True) if digit1 in [0,1,2,3,4,7,8,9] else drawline(False)
t.left(180)
t.penup()
t.fd(20)
else:
break
i=i+1
def main():
t.setup(800,350,200,200)
t.penup()
t.fd(-300)
t.pensize(5)
remain = datetime.datetime(2020,5,1) -datetime.datetime.now()
s = str(remain)
drawdigit(s)
t.hideturtle()
t.done()
main()
更多推荐
已为社区贡献1条内容
所有评论(0)