python学习——day03

快来打我* 2022-05-19 09:28 336阅读 0赞

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

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

pyInstaller库(第三方库):

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






















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

例子2:斐波拉契数列
70 2

例子4:字符倒转

  1. #StrReverse.py
  2. def rvs(s):
  3. if s=="":
  4. return s
  5. else:
  6. return rvs(s[1:])+s[0]
  7. str=input("请输入字符串:")
  8. print(rvs(str))

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

例子5:汉诺塔

  1. #HanNuoTa.py
  2. count=0;
  3. def hanoi(n,src,dst,mid): #参数1:圆盘数量;参数2:源柱子;参数3:目标柱子;参数4:中间柱子
  4. global count
  5. if n==1:
  6. print("{}:{}->{}".format(1,src,dst)) #将原始柱的盘子移动到目标柱子
  7. count+=1
  8. else:
  9. hanoi(n-1,src,mid,dst) #将原始柱的n-1个盘子借助目标柱子移动到中间柱子
  10. print("{}:{}->{}".format(n,src,dst))
  11. count+=1
  12. hanoi(n-1,mid,dst,src) #再将n-1个盘子借助原始柱子从中间柱子移动到目标柱子
  13. S1,S2,S3="A","B","C"
  14. 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条短的直线,每一条短的直线又可执行相同的操作
70 3

  1. #KochDrawV1.py
  2. #科赫曲线小包裹
  3. import turtle
  4. def koch(size,n): #size->源曲线长度,n->阶数
  5. if n==0:
  6. turtle.fd(size) #直接绘制一条直线
  7. else:
  8. for angle in [0,60,-120,60]: #left为“海龟”方向(相对)
  9. turtle.left(angle)
  10. koch(size/3,n-1)
  11. def main():
  12. turtle.setup(600,600)
  13. turtle.penup()
  14. turtle.goto(-200,100)
  15. turtle.pendown()
  16. turtle.pensize(2)
  17. # 科赫曲线的绘制
  18. # koch(400,3) #3阶科赫曲线
  19. #科赫雪花的绘制
  20. level=3 #三阶科赫雪花
  21. turtle.color("red")
  22. koch(400,level)
  23. turtle.right(120)
  24. turtle.color("green")
  25. koch(400,level)
  26. turtle.right(120)
  27. turtle.color("blue")
  28. koch(400,level)
  29. turtle.hideturtle()
  30. turtle.done()
  31. main()

最终运行:
70 4

发表评论

表情:
评论列表 (有 0 条评论,336人围观)

还没有评论,来说两句吧...

相关阅读