基本思路:
1.绘制单个数字对应的数码管
2.获得一串数字,绘制对应的数码管
3.获得当前系统时间,绘制对应的数码管
import turtle
def drawLine(draw):
turtle.pendown() if draw else turtle.penup();
turtle.fd(40);
turtle.right(90);
def drawDigit(digit):
drawLine(True) if digit in [2,3,4,5,6,7,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):
for i in date:
drawDigit(eval(i));
def main():
turtle.setup(800, 350, 200, 200);
turtle.penup();
turtle.fd(-300);
turtle.pensize(5);
drawDate('20190925');
turtle.hideturtle();
turtle.done();
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 [2,3,4,5,6,7,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):
for i in date:
drawDigit(eval(i));
def main():
turtle.setup(800, 350, 200, 200);
turtle.penup();
turtle.fd(-300);
turtle.pensize(5);
drawDate('20190925');
turtle.hideturtle();
turtle.done();
运行结果:
获取系统时间,绘制七段数码管
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,7,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", 18, "normal"));
turtle.pencolor("green");
turtle.fd(40);
elif i == '=':
turtle.write('月', font=("Arial", 18, "normal"));
turtle.pencolor("blue");
turtle.fd(40);
elif i == '+':
turtle.write('日', font=("Arial", 18, "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();
举一反三:理解思维方法
本文仅为学习Python记录,资料来源于中国大学MOOC《Python语言设计》—嵩天