Python turtle绘图——七段数码管显示数字和字母

一、运行结果

Python turtle绘图——七段数码管显示数字和字母_第1张图片

二、程序设计

七段数码管由7条线组成,以下图所标识的画图顺序为准进行程序设计。

Python turtle绘图——七段数码管显示数字和字母_第2张图片

 

首先导入turtle库并将其重命名为t。

import turtle as t

定义函数drawGap()用于绘制间隙,通过将画笔抬起,并向前移动5个单位,来实现间隙的绘制。

def drawGap(): # 绘制间隙
    t.penup()
    t.fd(5) # 设置间隙大小

定义函数drawLine(draw)用于绘制线段,通过判断参数draw的布尔值,决定是否下笔绘制线段。如果布尔值为True,则将画笔放下,向前移动40个单位;如果布尔值为False,则将画笔抬起,向前移动40个单位。然后调用drawGap()函数绘制间隙,并将画笔右转90度,准备绘制下一段线。

def drawLine(draw): # 绘制数码管中的一段线
     drawGap()
     t.pendown() if draw else t.penup()
     t.fd(40)
     drawGap()
     t.right(90)

之后,我们根据所要绘制的数字和字母定义函数drawDight(s),下图是数字和字母的数码管显示图。

Python turtle绘图——七段数码管显示数字和字母_第3张图片

 

以1号线段为例,数字中包含它的有2,3,4,5,6,8,9,字母中包含它的有a,b,d,e,f,h,k,n,o,p,q,s,t,w,x,y,z。

然后定义drawDight(s)函数,根据字符s绘制七段数码管。

根据不同的字符,调用drawLine()函数绘制对应的线段。通过判断字符s的值,决定绘制哪些线段。每绘制完一组线段,将画笔左转90度,准备绘制下一组线段。

def drawDight(s): # 根据字符绘制七段数码管
     # 绘制1号线段
    drawLine(True) if s in ['2','3','4','5','6','8','9','a','b','d','e','f','h','k','n','o','p','q','s','t','w','x','y','z'] else drawLine(False)
     # 绘制2号线段
    drawLine(True) if s in ['0','1','3','4','5','6','7','8','9','a','b','d','g','h','i','j','k','m','n','o','q','u','v','w','x','y'] else drawLine(False)
     # 绘制3号线段
    drawLine(True) if s in ['0','2','3','5','6','8','9','b','c','d','e','g','i','j','l','o','s','t','u','v','w','y','z'] else drawLine(False)
     # 绘制4号线段
    drawLine(True) if s in ['0','2','6','8','a','b','c','d','e','f','g','h','k','l','m','n','o','p','r','t','u','v','w','z'] else drawLine(False)

    t.left(90)

     # 绘制5号线段
    drawLine(True) if s in ['0','4','5','6','8','9','a','b','c','e','f','g','h','k','l','m','p','q','r','t','u','w','x','y'] else drawLine(False)
     # 绘制6号线段
    drawLine(True) if s in ['0','2','3','5','6','7','8','9','a','c','e','f','g','i','k','m','p','q','r','s'] else drawLine(False)
     # 绘制7号线段
    drawLine(True) if s in ['0','1','2','3','4','7','8','9','a','d','h','i','j','m','p','q','u','w','y','z'] else drawLine(False)

    t.right(180)
    t.penup()
    t.fd(30)

定义drawStr(Str)函数,用于依次绘制输入的字符串中的每个字符,通过遍历字符串中的每个字符,调用drawDight()函数进行绘制。

def drawStr(Str):
    for x in Str:
        drawDight(x)   

定义main()函数,用于设置全局参数和执行绘制操作。

在函数中,首先通过input()函数获取用户输入的一段字符,并将其赋值给变量a

然后设置画笔颜色为红色,设置窗口大小为1280x720,隐藏画笔,设置绘图速度为0,即最快速度,将画笔抬起并向后移动400个单位(设置绘图起点),设置画笔大小为5。

接着调用drawStr(a)函数来绘制用户输入的字符。

最后调用t.done()表示绘制完成。

def main(): # 全局设置
     a=input('请输入一段字符:')
     t.pencolor('red') # 设置画笔的颜色
     t.setup(1280,720) # 设置窗口的大小
     t.hideturtle() # 隐藏画笔         
     t.speed(0) # 设置画图速度       
     t.penup() 
     t.fd(-400) # 设置绘图起点         
     t.pensize(5) # 设置画笔大小
     drawStr(a)
     t.done()      

最后调用main()函数来执行整个绘制过程。

main()

三、源代码

import turtle as t
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 drawDight(s): # 根据字符绘制七段数码管
     # 绘制1号线段
    drawLine(True) if s in ['2','3','4','5','6','8','9','a','b','d','e','f','h','k','n','o','p','q','s','t','w','x','y','z'] else drawLine(False)
     # 绘制2号线段
    drawLine(True) if s in ['0','1','3','4','5','6','7','8','9','a','b','d','g','h','i','j','k','m','n','o','q','u','v','w','x','y'] else drawLine(False)
     # 绘制3号线段
    drawLine(True) if s in ['0','2','3','5','6','8','9','b','c','d','e','g','i','j','l','o','s','t','u','v','w','y','z'] else drawLine(False)
     # 绘制4号线段
    drawLine(True) if s in ['0','2','6','8','a','b','c','d','e','f','g','h','k','l','m','n','o','p','r','t','u','v','w','z'] else drawLine(False)

    t.left(90)

     # 绘制5号线段
    drawLine(True) if s in ['0','4','5','6','8','9','a','b','c','e','f','g','h','k','l','m','p','q','r','t','u','w','x','y'] else drawLine(False)
     # 绘制6号线段
    drawLine(True) if s in ['0','2','3','5','6','7','8','9','a','c','e','f','g','i','k','m','p','q','r','s'] else drawLine(False)
     # 绘制7号线段
    drawLine(True) if s in ['0','1','2','3','4','7','8','9','a','d','h','i','j','m','p','q','u','w','y','z'] else drawLine(False)

    t.right(180)
    t.penup()
    t.fd(30)
def drawStr(Str):
    for x in Str:
        drawDight(x)          
def main(): # 全局设置
     a=input('请输入一段字符:')
     t.pencolor('red') # 设置画笔的颜色
     t.setup(1280,720) # 设置窗口的大小
     t.hideturtle() # 隐藏画笔         
     t.speed(0) # 设置画图速度       
     t.penup() 
     t.fd(-400) # 设置绘图起点         
     t.pensize(5) # 设置画笔大小
     drawStr(a)
     t.done()      
main()

你可能感兴趣的:(#,turtle绘图,python)