python学习——day03
程序员文章站
2022-06-10 15:07:11
...
本文参与「少数派读书笔记征文活动」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的程序可以不提供命令行界面 | 加入版本文件 |
安装步骤:
- 下载pip(https://pypi.org/project/pip/#files)
- (cmd命令行)进入pip解压目录,输入命令:python setup.py install
补充:
1) pip更新模块 pip install -U [PackageName]
2) pip卸载模块 pip uninstall [PackageName]
3) 查看pip已安装的库 pip list - 我因为没有安装setuptools,所以还要先安装setuptools再执行前1、2步(下载setuptools:https://pypi.org/project/setuptools/#files;安装:进入setuptools解压目录,输入命令:python setup.py install )
- 配置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。 - (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就是自己安装第三方库的目录) - 打包程序,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放于同一路径下就行 - 运行:打开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()
最终运行: