python实例复习5——7段数码管的绘制和科赫雪花

本文介绍使用Python的turtle库绘制7段数码管显示时间和科赫雪花图案的方法。通过函数调用简化编程,提升代码复用性和可读性。科赫雪花绘制采用递归思想,展示不同阶数的图案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、7段数据管的绘制
7段数码管的绘制主要是为了复习函数的使用,在程序中多次调用函数,来达到简化编程,让程序可读性增强,并且达到程序复用的方法。
这段程序中主要是通过使用turtle库,和将绘制数码管的规律找出来,并让函数去执行,最后使用之前学习的time模块获取系统的时间,具体代码如下:

import turtle
import 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):	#0-9数值需要画的线条
    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', 18, 'normal'))  #turtle.write(s,font=(“font-name”,font_size,”font_type”)):写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;
            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

最后效果如下:
在这里插入图片描述
在这里通过编写了众多的函数,来让复杂的程序变得简单了许多。

二、科赫雪花的绘制
科赫雪花来自于科赫曲线,就是每条直线的中间三分之一进行上凸成一个缺少底边的等边三角形,这样就有四条曲线。第二次四条曲线分别执行第一步的操作,因此类推。
这里主要使用的就是递归的思想,之前学习过斐波拉契数列和汉诺塔这样简单的递归,这次学习了一个复杂一点。代码如下:

import turtle
def koch(size, n):
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            koch(size/3, n-1)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200, 100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3
    koch(400, level)
    turtle.right(120)
    koch(400, level)
    turtle.right(120)
    koch(400, level)
    turtle.hideturtle()

这是3阶的,效果如下:
在这里插入图片描述
如果需要更高阶的,直接改变level就行了,试一下四阶的:
在这里插入图片描述

这个时间真的有点长了,当然还可以让这个更好看,更改画笔颜色,还有更多的别的复杂的递归以后也要去学习,嵩天老师的课还是受益很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值