当前位置: 首页 > article >正文

PyInstaller库的使用及Koch曲线及推广,绘制康托尔集

PyInstaller库概述

将.py源代码转换成无需源代码的可执行文件

意思就是将.py文件转换为.exe文件

PyInstaller库是第三方库

- 官方网站:http://www.pyinstaller.org

- 第三方库:使用前需要额外安装

- 安装第三方库需要使用pip工具

PyInstaller库的安装

(cmd命令行) pip install pyinstaller

PyInstaller库的说明

pyinstaller库安装之后,它会安装生成一个文件,也是一个命令叫做PyInstaller,通过这样一个命令将一个源文件打包生成一个可执行文件

 它会生成三个目录, __pycache__和build可以安全删除掉,而我们想要的可执行文件就在dist文件夹中        

 PyInstaller库常用参数

科赫雪花小包裹

科赫曲线,也叫雪花曲线;科赫曲线是一种用于分形的曲线

 

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      # 3阶科赫雪花,阶数
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()
main()

这段代码是用Python中的turtle库实现了科赫雪花的绘制。主要思路是采用递归的方式来绘制雪花的每一个分支,直到达到指定的阶数。

首先定义了一个koch函数,它的参数包括size和n,分别表示每个分支的长度和绘制的阶数。如果当前阶数为0,就直接绘制一条直线,否则就递归地绘制当前分支的三个子分支。

在绘制子分支的过程中,每次都要先左转或右转60度,然后继续递归绘制子分支。递归结束后,再左转或右转120度,继续递归绘制下一个子分支,直到绘制完整个雪花。

然后在main函数中,先进行一些初始化的操作,包括设置窗口大小、将画笔移动到指定的起点、设置画笔粗细等。接着设置阶数为3,然后分别绘制三个顶点处的雪花分支,最后隐藏画笔,完成绘制。

总之,这段代码实现科赫雪花的主要思路是使用递归,将雪花的每一个分支分解为三个子分支,然后依次绘制这些子分支,最终完成整个雪花的绘制。

 

举一反三

我们使用康托尔集做一个类似效果

康托尔集是一种无限长的、自相似的分形集合。类似于科赫雪花,我们可以使用递归的方式来绘制康托尔集。

#!/usr/bin/env python
# -- coding: utf-8 --
# @Time : 2023/3/25 16:35
# @File : 康托尔集.py
import turtle

def cantor(length, depth):
    if depth == 0:
        turtle.fd(length)
    else:
        turtle.down()
        cantor(length/3, depth-1)
        turtle.up()
        turtle.fd(length/3)
        turtle.down()
        cantor(length/3, depth-1)
        turtle.up()
        turtle.fd(length/3)
        turtle.down()
        cantor(length/3, depth-1)
        turtle.up()

def main():
    turtle.setup(800, 400)
    turtle.speed(0)
    turtle.penup()
    turtle.goto(-350, 0)
    turtle.pendown()
    turtle.pensize(2)
    cantor(700, 5)
    turtle.hideturtle()
    turtle.done()

main()

在上述代码中,我们定义了一个cantor函数,它的参数包括length和depth,分别表示当前分支的长度和绘制的深度。

如果当前深度为0,就直接绘制一条长度为length的直线;否则就递归地绘制三个子分支,分别为长度为length/3的cantor(length/3, depth-1)。

在绘制子分支的过程中,我们首先将画笔降下,然后递归地绘制子分支。递归结束后,我们将画笔抬起,向前移动length/3的距离,再将画笔降下,继续绘制下一个子分支。

最后,在main函数中,我们先进行一些初始化的操作,包括设置窗口大小、将画笔移动到指定的起点、设置画笔粗细等。接着设置深度为5,然后绘制一条长度为700的康托尔集,最后隐藏画笔,完成绘制。

运行上述代码,我们可以看到一个康托尔集的图形,它由一系列越来越短的线段组成,非常具有美感。

 


http://www.kler.cn/a/4672.html

相关文章:

  • 2023学生党适用的蓝牙耳机有哪些?四款学生党值得入手的蓝牙耳机推荐
  • 软件框架-实现使用@Component@Data@Configuration@Bean(配置类控制类实体类)等方法实现将配置文件从8080端口显示在网页上
  • QT中字符转换
  • 支付宝跳转
  • cron表达式 详解
  • vue3 编写 svg 通用组件 修改颜色和尺寸
  • Unity Animation -- Overview
  • Vue3 の 组合式函数
  • C语言通讯录应用程序:从设计到实现
  • 如何使用python删除一个文件?好用到上头.....
  • ElasticSearch系列 - SpringBoot整合ES:组合多个查询条件 bool 查询
  • 正则表达式(含管道符)
  • 法规标准-GB/T 39901标准解读(2021版)
  • 矩阵求逆_伴随矩阵法
  • 海王算法(看完不会变成海王)
  • 基于springboot实现广场舞团管理系统演【附项目源码】
  • 第19章 表单脚本
  • 云计算面试总结
  • 力扣sql简单篇练习(三十)
  • 优漫动游明白这三个道理UI设计师能更好找工作