欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python学习——day03

程序员文章站 2022-06-10 15:07:11
...

本文参与「少数派读书笔记征文活动」https://sspai.com/post/45653

前两天回家了,今天继续(果然还是学校学习动力比较足233333)

pyInstaller库(第三方库):

利用可执行文件执行.py程序(打包)->不需要python解释器及配置环境(第三方库使用前需要额外安装,利用pip工具)
python学习——day03
补充:
 

参数 -y,--nocomfirm -n,Name,--name Name --distpath DIR --hidden-import ModuleName -w,-windowed,--noconsole --version-file File
描述 不询问 打包后文件名 指定打包位置 打包隐藏的模块 有GUI的程序可以不提供命令行界面 加入版本文件


安装步骤:

  1. 下载pip(https://pypi.org/project/pip/#files)
  2. (cmd命令行)进入pip解压目录,输入命令:python setup.py install
    补充:
    1)  pip更新模块 pip install -U [PackageName]
    2)  pip卸载模块 pip uninstall [PackageName]
    3)  查看pip已安装的库 pip list
  3. 我因为没有安装setuptools,所以还要先安装setuptools再执行前1、2步(下载setuptools:https://pypi.org/project/setuptools/#files;安装:进入setuptools解压目录,输入命令:python setup.py install )
  4. 配置pip环境变量(电脑->属性->高级系统设置->环境变量->系统变量->Path->变量值末尾添加python的Scripts路径[D:\Program Files (x86)\Python\Python36-32\Scripts])
    注意:如果当前环境安装的是python2,则Scripts文件中会有pip和pip2;是python3的话,就是pip和pip3,虽然pip.exe和pip2/3的效果是一样的,但是命令行执行时,只能识别pip2/3。
  5. (cmd命令行)pip install pyinstaller
    注意:python2.7安装pyinstaller可能会出错,应该是SSL连接的问题,安装更高版本的python就可以解决。
    备注:如果使用的是pycharm IDE,有两种安装第三方数据库的方法(推荐使用方法一)
    1)  通过命令行安装(需要注意的是pycharm的同步:File->Settings->Project->Project Interpreter->Add[选择Python版本]->New environment[Location选择一个空文件;Base interpreter选择对应python版本的python.exe;勾选Inherit global site-packages!!!!!!]->OK->项目右键Synchronize xxx刷新library root)
    2)  直接使用pycharm简单粗暴:File->Default Settings->Project Interpreter->选择python版本->点击右侧“+”号添加库->搜索数据库名称->选中该库后点击底部的Install Package(在安装成功后会出现成功提示);点击“-”号可以卸载掉不需要的库。
    自定义第三方库的下载路径:
    1)  找到对应python版本的Lib路径(D:\Program Files (x86)\Python\Python36-32\Lib)
    2)  找到site.py并修改其中的USER_SITE和USER_BASE:
    USER_SITE = "D:\Program Files (x86)\Python\Python36-32\Lib\site-packages"
    USER_BASE = "D:\Program Files (x86)\Python\Python36-32\Scripts"
    (site-package和Scripts都是已经存在的文件,其中site-package就是自己安装第三方库的目录)
  6. 打包程序,pyinstller -F  [主文件] -p [其他文件1] -p [其他文件2] --hidden-import[自建模块1] --hidden-import[自建模块2]
    例:pyinstaller -F DrawDigitsV2.py -p DrawDigitsV1.py --hidden-import DrawDigitsV1
    注意:我是win8系统,以我的情况,要打包的所有py文件必须与pyinstaller.exe在同一路径下(绝对路径不可取),否则会出现找不到module的情况。其他图片,文本等依赖文件与最终exe放于同一路径下就行
  7. 运行:打开dist文件夹,双击exe即可
    备注:可通过直接修改生成.spec文件相关参数,直接执行pyinstaller -F DrawDigitsV2.py命令生成新的可执行文件

递归:

之前学习c和java的时候也学过递归,但是一直觉得不得要领,今天终于领悟到,递归是要抽象思考的,而我之前总是想着具象思考,恨不得把递归的过程每一步想清楚,心理才舒坦。。。(把现实情况抽象为数学公式或一个简化过程,极端情况的思考)

例子1:阶乘的实现
python学习——day03

例子2:斐波拉契数列
python学习——day03

例子4:字符倒转

#StrReverse.py
def rvs(s):
    if s=="":
        return s
    else:
        return rvs(s[1:])+s[0]

str=input("请输入字符串:")
print(rvs(str))

运行:请输入字符串:Hello World
           dlroW olleH

例子5:汉诺塔

#HanNuoTa.py

count=0;
def hanoi(n,src,dst,mid):       #参数1:圆盘数量;参数2:源柱子;参数3:目标柱子;参数4:中间柱子
    global count
    if n==1:
        print("{}:{}->{}".format(1,src,dst))    #将原始柱的盘子移动到目标柱子
        count+=1
    else:
        hanoi(n-1,src,mid,dst)      #将原始柱的n-1个盘子借助目标柱子移动到中间柱子
        print("{}:{}->{}".format(n,src,dst))
        count+=1
        hanoi(n-1,mid,dst,src)      #再将n-1个盘子借助原始柱子从中间柱子移动到目标柱子

S1,S2,S3="A","B","C"
hanoi(3,S1,S2,S3)

运行:1:A->B
           2:A->C
           1:B->C
           3:A->B
           1:C->A
           2:C->B
           1:A->B

例子6:科赫雪花
描述:原来的一条直线变成了4条短的直线,每一条短的直线又可执行相同的操作
python学习——day03

#KochDrawV1.py
#科赫曲线小包裹

import turtle
def koch(size,n):  #size->源曲线长度,n->阶数
     if n==0:
         turtle.fd(size)    #直接绘制一条直线
     else:
         for angle in [0,60,-120,60]:   #left为“海龟”方向(相对)
             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)
    # 科赫曲线的绘制
    # koch(400,3)     #3阶科赫曲线

    #科赫雪花的绘制
    level=3     #三阶科赫雪花
    turtle.color("red")
    koch(400,level)
    turtle.right(120)
    turtle.color("green")
    koch(400,level)
    turtle.right(120)
    turtle.color("blue")
    koch(400,level)
    turtle.hideturtle()
    turtle.done()

main()

最终运行:
python学习——day03