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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023学生党适用的蓝牙耳机有哪些?四款学生党值得入手的蓝牙耳机推荐

2023年了,蓝牙耳机依旧是人们日常使用最多的数码产品之一。不少人在选择蓝牙耳机时会根据性价比入手,性价比高的蓝牙耳机往往会更受欢迎。那么,适合学生党的蓝牙耳机有哪些?接下来,我来给大家推荐四款学生党值得入手的…

软件框架-实现使用@Component@Data@Configuration@Bean(配置类控制类实体类)等方法实现将配置文件从8080端口显示在网页上

一、前言 1.该程序代码是使用idea2021.12版本编写的,若使用其他软件请对照好配置; 2.这个程序具体的内容我忘了,只知道使用ComponentConfigurationPropertiesData ConfigurationBeanRestControllerAutowiredGetMapping等方法写的&#xff0…

cron表达式 详解

corn表达式是:由若干数字、空格、符号按一定的规则,组成的一组字符串,从而表达时间的信息。 好像和正则表达式有点类似哈,都是一个字符串表示一些信息。Cron 表达式生成器: https://www.smart-tools.cn/cron简介Cron 表…

Unity Animation -- Overview

Unity中动画师要做什么? 动画师负责为交互体验应用实现物体的动画效果,这些游戏物体有角色、过场动画、UI panel运动效果等等。 一般来说,非常复杂的物体或动画都是在DCC(Digital Content Creation)应用软件中制作的&a…

Vue3 の 组合式函数

数字化管理平台 Vue3ViteVueRouterPiniaAxiosElementPlus教程 权限系统-商城 个人博客地址 一、初识 官方给出的解释:“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。 有状态の逻辑 有状态の逻辑负责管理随着时间而变化…

C语言通讯录应用程序:从设计到实现

hello,这期给大家带来C语言实现静态通讯录,主要也是建立起创建大项目的思维,与往期这两篇博客有点类似 C语言实现三子棋 C语言实现扫雷 文章目录🤓通讯录介绍😶‍🌫️效果演示🤠主题框架头文件测试文件函数…

如何使用python删除一个文件?好用到上头.....

人生苦短,我用python 若想利用python删除windows里的文件, 这里需要使用os模块 那接下来就看看利用os模块是如何删除文件的吧~ 具体实现方法如下! 更多学习资料:点击此处跳转文末名片获取 os.remove(path) 删除文件 path. 如果path是一…

法规标准-GB/T 39901标准解读(2021版)

GB/T 39901是做什么的? GB/T 39901全名为乘用车自动紧急制动系统(AEBS)性能要求及试验方法,其中主要对AEBS的功能要求、性能要求及测试要求进行介绍 一般要求 1.安装有自动紧急制动系统的车辆应安装符合GB 21670-2008要求的防抱制动系统 2.AEBS的电磁…

海王算法(看完不会变成海王)

💧学了海王算法会变成海王吗,它又能解决什么样的问题呢?💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 数据结构与算法专栏的文章图文…

基于springboot实现广场舞团管理系统演【附项目源码】

基于springboot实现广场舞团管理系统演开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&#…

力扣sql简单篇练习(三十)

力扣sql简单篇练习(三十) 1 产品销售分析V 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT s.user_id,sum(s.quantity*p.price) spending FROM Sales s INNER JOIN Product p ON s.product_idp.pro…

迅镭激光带您沉浸式直击展会现场!线上直播、云端互动,精彩持续!

2023 ITES深圳工业展 迅镭展位10-B06 深圳国际会展中心-宝安新馆 今天(3月29日),2023 ITES深圳工业展在深圳国际会展中心(宝安新馆)盛大开幕!迅镭激光以“行业高端典范、引领智造未来”为主题,携多款旗舰产品展示领先技术,展会首日便收获了超…

组件自定义事件

绑定 组件自定义事件跟子传递很像 相同的是无论你使用的是props或者自定义事件,都是要使用到回调函数 子传父 需要亲自是收一下,然后调用一下 而自定义事件是没有给子组件传东西,只是这个当做事件的回调而已 对比一下student并没有数据来接收…

历史回顾:纽约地铁现在还用?OS/2历史回顾

hello大家好,我是每天(实际并不是每天,你们点的赞太少了,每人点一个赞我就日更)给你们讲解的Eric_Bells.今日份的历史回顾我们来讲讲一个比较冷门的系统:OS/2。 很多人就会问了:?&a…

华为OD机试题,用 Java 解【内存池】问题 | 含解题说明

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:内存池 题目 有一个简易内存池…

实验二 数据查询

实验二 数据查询 一.实验目的 1.理解数据库中数据的其他查询方法和应用; 2.学会各种查询要求的实现; 3.学会各种查询的异同及相互之间的转换方法。 二. 实验内容 在实验1的基础上,练习其它查询语句的使用,包括计算列、…

2023 年最佳 C++ IDE

文章目录前言1. Visual Studio2. Code::Blocks3. CLion4. Eclipse CDT(C/C 开发工具)5. CodeLite6. Apache NetBeans7. Qt Creator8. Dev C9. C Builder10. Xcode11. GNAT Programming Studio12. Kite总结前言 要跟踪极佳 IDE(集成开发环境&…

前端-微前端

实现方式: (1)微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web应用的技术手段及方法策略。 (2)微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用,这样才能确保微应用真正具…

嵌入式课程实现Linux操作系统LVGL移植操作

目录 1、介绍 2、移植 2.1 需要一个带有LCD代码的工程 2.2 在自己工程目录下新建LVGL文件 ​编辑 2.3 修改底层驱动 2.4 心跳 3、对象 1、介绍 上次我们完成了在Windows上移植LVGL到一个LCD工程当中,感兴趣的小伙伴可以到博主的主页当中去自行查找即可&…

一位年薪35W的测试被开除,回怼的一番话,令人沉思

一位年薪35W测试工程师被开除回怼道:“反正我有技术,在哪不一样” 一技傍身,万事不愁,当我们掌握了一技之长后,在职场上说话就硬气了许多,不用担心被炒,反过来还可以炒了老板,这一点…
最新文章