用Python绘制的七段数码管来显示数字和字母
利用Python绘制的
七段数码管,实际上是用turtle绘制七段规则排列的直线,通过组合来显示出实际意义上的事物。
以
嵩天老师留下的课后作业为例:
- 可以显示数字(改进了一下,用input输入)
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()
- 可以显示字母
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)
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()
- 关于实时时间的显示
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):
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)
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()