python学习——day03

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

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

pyInstaller库(第三方库):

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

补充:
 

参数 -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:阶乘的实现

例子2:斐波拉契数列

例子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条短的直线,每一条短的直线又可执行相同的操作

#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()

最终运行:


 

猜你喜欢

转载自blog.csdn.net/lovedbaobao/article/details/81175766