Python程序打包

Python程序打包
Python程序打包

Python程序打包

Python程序打包工具

Python是一个脚本语言,被解释器解释执行。它的发布方式:

.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)。

?.pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。

?可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉他即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows, Linux, Mac,...)。

.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式。

各种打包工具的对比如下

Solution Windows Linux OS X Python 3

One

file

mode

Zipfile

import

Eggs

pkg_resources

support

bbFreeze yes yes yes no no yes yes yes

py2exe yes no no yes yes yes no no pyInstaller yes yes yes no yes no yes no

cx_Freeze yes yes yes yes no yes yes no

py2app no no yes yes no yes yes yes 其中pyInstaller和cx_Freeze都是不错的,stackoverflow上也有人建议用cx_Freeze,说是更便捷些。pkg_resources新版的pyInstaller貌似是支持的。

PyInstaller

安装pyinstaller

对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:

pip install pyinstaller

通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):

python setup.py install

安装完后,检查安装成功与否:

pyinstaller --version

安装成功后,就可以使用下面的命令了:

?pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。

?pyi-archive_viewer : 查看可执行包里面的文件列表。

?pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)

?pyi-... : 等等。

使用PyInstaller

pyinstaller的语法:pyinstaller [options] script [script ...] | specfile

最简单的用法,在和myscript.py同目录下执行命令:

pyinstaller mycript.py

然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:

pyinstaller -F mycript.py

你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。当然,pyinstaller还有各种选项,

有通用选项,如-d选项用于debug。

在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:

pyi-makespec options script [script ...]

创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:

pyinstaller specfile

pyi-build specfile

PyInstaller原理简介

PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil 工具包里面的ldd和objdump命令。

PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面。

可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了。

需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。

实践问题

pyinstaller打包后的exe运行怎么去掉弹出的命令行提示窗口?

1.如果使用.spec文件的话, 在该文件中找到console=True修改为

console=False

2.如果是直接指定python文件进行pyinstaller打包的话,需要添加—noconsole

pyinstaller path\\mycode.py --noconsole

如果想只打包成一个exe:

pyinstaller -F path\\mycode.py --noconsole

或:

pyinstaller -F -w path\\mycode.py

更换最终exe生成路径

在cmd中,一开始就要cd D:\PythonEXE\ 切换到输出文件夹,然后在用上面的代码,说明:各个参数的作用,

例子:pyinstaller -F -w -p D:\tmp\core-python\libs -i d:\tmp\main.ico main.py -F 表示生成单个可执行文件;

-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。

-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!;

-c –console, –nowindowed 使用控制台,无界面(默认);

-p 表示你自己自定义需要加载的类路径,一般情况下用不到;

-i 表示可执行文件的图标。

py2exe

(py2exe似乎只能支持python3.3和pyhton3.4)

py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。

py2exe已经被用于创建wxPython, Tkinter, Pmw, PyGTK, pygame, win32com client和server,和其它的独立程序。py2exe是发布在开源许可证下的。

py2exe的用法

如果你有一个名为myscript.py的python脚本,你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的windows系统上,那么首先你应写一个用于发布程序的设置脚本例如mysetup.py,在其中的setup函数前插入语句import py2exe 。

mysetup.py示例如下:

# mysetup.py

from distutils.core import setup

import py2exe

setup(console=["myscript.py"])

然后按下面的方法运行mysetup.py:

python mysetup.py py2exe

上面的命令执行后将产生一个名为dist的子目录,其中包含了myscript.exe,python24.dll,library.zip这些文件。

如果你的myscript.py脚本中用了已编译的C扩展模块,那么这些模块也会被拷贝在个子目录中,同样,所有的dll文件在运行时都是需要的,除了系统的dll 文件。 dist子目录中的文件包含了你的程序所必须的东西,你应将这个子目录中的所有内容一起发布。

默认情况下,py2exe在目录dist下创建以下这些必须的文件:

1、一个或多个exe文件。

2、python##.dll。

3、几个.pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的.dll文件,这些.dll是.pyd所需要的。

4、一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo 上面的mysetup.py创建了一个控制台的myscript.exe程序,如果你要创建一个图形用户界的程序,那么你只需要将mysetup.py中的console=["myscript.py"]替换为windows=["myscript.py"]既可。

py2exe一次能够创建多个exe文件,你需要将这些脚本文件的列表传递给console或windows的关键字参数。如果你有几个相关联的脚本,那么这是很有

用的。

运行下面个命令,将显示py2exe命令的所有命令行标记。

python mysetup.py py2exe --help

指定额外的文件

一些应用程序在运行时需要额外的文件,诸如配置文件、字体、位图。如果在安装脚本中用data_files可选项指定了那些额外的文件,那么py2exe能将这些文件拷贝到dist子目录中。data_files应包含一个元组(target-dir, files)列表,其中的files是这些额外的文件的列表。

示例如下:

# mysetup.py

from distutils.core import setup

import glob

import py2exe

setup(console=["myscript.py"],

data_files=[("bitmaps", ["bm/large.gif",

"bm/small.gif"]), ("fonts", glob.glob("fonts\\*.fnt"))], )

说明:data_files选项将创建一个子目录dist\bitmaps,其中包含两个.gif文件;一个子目录dist\fonts,其中包含了所有的.fnt文件。

Windows NT services

你可以通过传递一个service关键字参数给setup函数来建造Windows NT services , 这个service参数的值必须是一个Python模块名(包含一service类)的列表。

示例如下:

# mysetup.py

from distutils.core import setup

import py2exe

setup(service=["MyService"])

所建造的可执行的service是可以通过在其后跟一定的命令行参数标记来自行安装和卸载的。

python数据分析过程示例

python数据分析过程示例

引言 几年后发生了。在使用SAS工作超过5年后,我决定走出自己的舒适区。作为一个数据科学家,我寻找其他有用的工具的旅程开始了!幸运的是,没过多久我就决定,Python作为我的开胃菜。 我总是有一个编写代码的倾向。这次我做的是我真正喜欢的。代码。原来,写代码是如此容易! 我一周内学会了Python基础。并且,从那时起,我不仅深度探索了这门语言,而且也帮助了许多人学习这门语言。Python是一种通用语言。但是,多年来,具有强大的社区支持,这一语言已经有了专门的数据分析和预测模型库。 由于Python缺乏数据科学的资源,我决定写这篇教程来帮助别人更快地学习Python。在本教程中,我们将讲授一点关于如何使用Python 进行数据分析的信息,咀嚼它,直到我们觉得舒适并可以自己去实践。

目录 1. 数据分析的Python基础 o为什么学Python用来数据分析o Python 2.7 v/s 3.4 o怎样安装Python o在Python上运行一些简单程序2. Python的库和数据结构 o Python的数据结构 o Python的迭代和条件结构

o Python库 3. 在Python中使用Pandas进行探索性分析 o序列和数据框的简介 o分析Vidhya数据集——贷款的预测问题 4. 在Python中使用Pandas进行数据再加工 5. 使用Python中建立预测模型 o逻辑回归 o决策树 o随机森林 让我们开始吧 1.数据分析的Python基础 为什么学Python用来数据分析 很多人都有兴趣选择Python作为数据分析语言。这一段时间以来,我有比较过SAS和R。这里有一些原因来支持学习Python:

python语言经典入门级案例(含源代码)

python经典入门级案例(含源代码) 案例一: 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(1,5): for j in range(1,5): for k in range(1,5): if( i != k ) and (i != j) and (j != k): print i,j,k 以上实例输出结果为: 123 124 132 134 142 143 213 214 231 234 241 243

案例二: 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*-

i = int(raw_input('净利润:')) arr = [1000000,600000,400000,200000,100000,0] rat = [0.01,0.015,0.03,0.05,0.075,0.1] r = 0 for idx in range(0,6): if i>arr[idx]: r+=(i-arr[idx])*rat[idx] print (i-arr[idx])*rat[idx] i=arr[idx] print r 以上实例输出结果为: 案例三: 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 假设该数为x。 1、则:x + 100 = n2, x + 100 + 168 = m2 2、计算等式:m2 - n2 = (m + n)(m - n) = 168

python语言经典基础级案例(含源代码)

python语言经典案例(基础级) 案例1: 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析:利用while 或for 语句,条件为输入的字符不为'\n'。 实例- 使用while 循环 #!/usr/bin/python # -*- coding: UTF-8 -*- import string s = raw_input('请输入一个字符串:\n') letters = 0 space = 0 digit = 0 others = 0 i=0 while i < len(s): c = s[i] i += 1 if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print'char = %d,space = %d,digit = %d,others = %d' % (letters, space,digit,others) 实例- 使用for 循环 #!/usr/bin/python

# -*- coding: UTF-8 -*- import string s = raw_input('请输入一个字符串:\n') letters = 0 space = 0 digit = 0 others = 0 for c in s: if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print'char = %d,space = %d,digit = %d,others = %d' % (letters, space,digit,others) 以上实例输出结果为: 案例2: 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 程序分析:无 程序源代码:

python经典实例

1 输出你好 #打开新窗口,输入: #! /usr/bin/python # -*- coding: utf8 -*- s1=input("Input your name:") print("你好,%s" % s1) ''' 知识点: * input("某字符串")函数:显示"某字符串",并等待用户输入. * print()函数:如何打印. * 如何应用中文 * 如何用多行注释 ''' 2 输出字符串和数字 但有趣的是,在javascript里我们会理想当然的将字符串和数字连接,因为是动态语言嘛.但在Python里有点诡异,如下: #! /usr/bin/python a=2 b="test" c=a+b 运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 #! /usr/bin/python #运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 a=2 b="test" c=str(a)+b d="1111" e=a+int(d) #How to print multiply values print ("c is %s,e is %i" % (c,e)) ''' 知识点: * 用int和str函数将字符串和数字进行转换 * 打印以#开头,而不是习惯的// * 打印多个参数的方式 '''

3 列表 #! /usr/bin/python # -*- coding: utf8 -*- #列表类似Javascript的数组,方便易用 #定义元组 word=['a','b','c','d','e','f','g'] #如何通过索引访问元组里的元素 a=word[2] print ("a is: "+a) b=word[1:3] print ("b is: ") print (b) # index 1 and 2 elements of word. c=word[:2] print ("c is: ") print (c) # index 0 and 1 elements of word. d=word[0:] print ("d is: ") print (d) # All elements of word. #元组可以合并 e=word[:2]+word[2:] print ("e is: ") print (e) # All elements of word. f=word[-1] print ("f is: ") print (f) # The last elements of word. g=word[-4:-2] print ("g is: ") print (g) # index 3 and 4 elements of word. h=word[-2:] print ("h is: ") print (h) # The last two elements. i=word[:-2] print ("i is: ") print (i) # Everything except the last two characters l=len(word) print ("Length of word is: "+ str(l)) print ("Adds new element") word.append('h') print (word) #删除元素 del word[0] print (word) del word[1:3] print (word) ''' 知识点:

(完整版)Python100个小例子.docx

一、 Python 练习实例 1 题目:有四个数字: 1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是 1、 2、 3、4。组成所有的排列后再去掉不满足条件的排列。 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(1, 5): for j in range(1, 5): for k in range(1, 5): if (i != k) and (i != j) and (j != k): print(i, j, k) 二、 Python 练习实例 2 题目:企业发放的奖金根据利润提成。利润(I) 低于或等于10 万元时,奖金可提10%;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可提成 7.5%;20 万到 40 万之间时,高于 20 万元的部分,可提 成5%;40 万到 60 万之间时高于 40 万元的部分,可提成 3%;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5%,高于 100 万元时,超过 100 万元的部分按 1%提成,从键盘输入当月利润 I ,求应发放奖金总数? 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- i = int(input('净利润:')) arr = [1000000, 600000, 400000, 200000, 100000, 0] rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1] r = 0 for idx in range(0, 6): if i > arr[idx]: r += (i - arr[idx]) * rat[idx] print((i - arr[idx]) * rat[idx]) i = arr[idx] print(r) 三、 Python 练习实例 3 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平 方数,请问该数是多少? 程序分析: 假设该数为 x 。 1、则: x + 100 = n2, x + 100 + 168 = m2 2、计算等式: m2 - n2 = (m + n)(m - n) = 168

基于Python的Abaqus二次开发实例讲解

基于Python的Abaqus二次开发实例讲解 (asian58 2013.6.26) 基于Python的Abaqus的二次开发便捷之处在于: 1、所有的代码均可以先在Abaqus\CAE中操作一遍后再通过rp文件读取,然后再在此基础上进行相应的修改; 2、Python是一种解释性语言,读起来非常清晰,因此在修改程序的过程中,不存在程序难以理解的问题; 3、Python是一种通用性的、功能非常强大的面向对象编程语言,有许多成熟的类似于Matlab函数的程序在网络上流传,为后期进一步的数据处理提供了方便。 为了更加方便地完成Abaqus的二次开发,需进行一些相关约定: 1、所有参数化直接通过点的坐标值进行,直接对几何尺寸的参数化反而更加繁琐; 2、程序参数化已不允许在模型中添加太多的Tie,因此不同零部件的绑定直接通过共节点来进行,这就要求建模方法与常规的建模方法有所区别。思路如下: 将一个整机拆成几个大的Part来建立,一个Part中包含许多零件,这样在划分网格式时就可以自动实现共节点的绑定。不同的零件可通过建立不同的Set来进行区分,不同Part 的绑定可以通过Tie来实现。将一个复杂的结构拆成几个恰当的Part来建立,一方面可以将复杂的模型简单化,使建立复杂模型成为可能;另一方面,不同的Part可单独调用,从而又可实现程序的模块化,增加程序的适应范围,延长程序的使用寿命,也方便后期程序的维护和修改。 3、通过py文件建立起的模型要进行参数优化,已不适合采用Isight中Abaqus模块,需要用到Isight的Simcode模块。 下面详细解释一个臂架的py文件。 #此程序用来绘制臂架前段 #导入相关模块 # -*- coding: mbcs -*- from abaqus import * from abaqusConstants import * #定义整个臂架的长、宽、高 L0=14300 W0=1650 H0=800

python经典实例

精心整理1输出你好 #打开新窗口,输入: #!?/usr/bin/python #?-*-?coding:?utf8?-*-? s1=input("Input?your?name:") print("你好,%s"?%?s1) ''' 知识点: ????*?input("某字符串")函数:显示"某字符串",并等待用户输入. ????*?print()函数:如何打印. ????*?如何应用中文 ???*?如何用多行注释 '''???? 2输出字符串和数字 但有趣的是,在javascript里我们会理想当然的将字符串和数字连接,因为是动态语言嘛.但在Python里有点诡异,如下: #!?/usr/bin/python a=2 b="test" c=a+b 运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 #!?/usr/bin/python #运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 a=2 b="test" c=str(a)+b d="1111" e=a+int(d) #How?to?print?multiply?values print?("c?is?%s,e?is?%i"?%?(c,e)) ''' 知识点: ????*?用int和str函数将字符串和数字进行转换 ????*?打印以#开头,而不是习惯的// ????*?打印多个参数的方式 ????''' 3列表 #!?/usr/bin/python #?-*-?coding:?utf8?-*- #列表类似Javascript的数组,方便易用 #定义元组 word=['a','b','c','d','e','f','g']

Python入门经典实例

#打开新窗口,输入: #! /usr/bin/python # -*- coding: utf8 -*- s1=input("Input your name:") print("你好,%s" % s1) ''' 知识点: * input("某字符串")函数:显示"某字符串",并等待用户输入. * print()函数:如何打印. * 如何应用中文 * 如何用多行注释 ''' 2 字符串和数字 但有趣的是,在javascript里我们会理想当然的将字符串和数字连接,因为是动态语言嘛.但在Python里有点诡异,如下: #! /usr/bin/python a=2 b="test" c=a+b 运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 #! /usr/bin/python #运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 a=2 b="test" c=str(a)+b d="1111" e=a+int(d) #How to print multiply values print ("c is %s,e is %i" % (c,e)) ''' 知识点: * 用int和str函数将字符串和数字进行转换 * 打印以#开头,而不是习惯的// * 打印多个参数的方式 '''

#! /usr/bin/python # -*- coding: utf8 -*- #列表类似Javascript的数组,方便易用 #定义元组 word=['a','b','c','d','e','f','g'] #如何通过索引访问元组里的元素 a=word[2] print ("a is: "+a) b=word[1:3] print ("b is: ") print (b) # index 1 and 2 elements of word. c=word[:2] print ("c is: ") print (c) # index 0 and 1 elements of word. d=word[0:] print ("d is: ") print (d) # All elements of word. #元组可以合并 e=word[:2]+word[2:] print ("e is: ") print (e) # All elements of word. f=word[-1] print ("f is: ") print (f) # The last elements of word. g=word[-4:-2] print ("g is: ") print (g) # index 3 and 4 elements of word. h=word[-2:] print ("h is: ") print (h) # The last two elements. i=word[:-2] print ("i is: ") print (i) # Everything except the last two characters l=len(word) print ("Length of word is: "+ str(l)) print ("Adds new element") word.append('h') print (word) #删除元素 del word[0] print (word) del word[1:3] print (word) ''' 知识点:

Python100个小例子

一、Python 练习实例1 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(1, 5): for j in range(1, 5): for k in range(1, 5): if (i != k) and (i != j) and (j != k): print(i, j, k) 二、Python 练习实例2 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- i = int(input('净利润:')) arr = [1000000, 600000, 400000, 200000, 100000, 0] rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1] r = 0 for idx in range(0, 6): if i > arr[idx]: r += (i - arr[idx]) * rat[idx] print((i - arr[idx]) * rat[idx]) i = arr[idx] print(r) 三、Python 练习实例3 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 假设该数为 x。 1、则:x + 100 = n2, x + 100 + 168 = m2 2、计算等式:m2 - n2 = (m + n)(m - n) = 168

python建模实例详解

###################################### ##Fundamentschwingungsstudie## ##nur geeignet fuer ABAQUS 6.4-1## ##erstellt von D.Chen in 2009## ###################################### #开头的为注释行. 第一步, 建立建模环境, 这一步中py将从abaqus中导入建模所需的所有程序模块. from part import * 接下来定义草图环境 mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=200.0) mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(construct ionGeometry=ON, decimalPlaces=2, dimensionTextHeight=5.0, grid=ON, gridFrequency=2, gridSpacing=5.0, sheetSize=200.0, viewStyle=AXISYM) 上面的设定为大小200*200, 格栅间距为5, 文字标注高度为5. mdb.models['Model-1'].sketches['__profile__'].ObliqueConstructionLine(point1=(0 .0, -100.0), point2=(0.0, 100.0)) 本句语句设定轴对称模型的对称轴线位置 mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(0.0, 0.0),point2=(40.0, -40.0)) 该语句绘制矩形, 从点0,0 至点40,-40 mdb.models['Model-1'].Part(dimensionality=AXISYMMETRIC, name='Boden', type=DEFORMABLE_BODY) 定义模型为轴对称, 名字为boden,为可变形体 mdb.models['Model-1'].parts['Boden'].BaseShell(sketch=mdb.models['Model-1'].ske tches['__profile__']) del mdb.models['Model-1'].sketches['__profile__'] 绘图完成不要忘记收回建模环境所占的内存 第二节, 材料定义 from material import * from section import * 从ABAQUS提供的接口中导入材料库和组件库 mdb.models['Model-1'].Material(name='Boden') 定义材料名

Python入门经典实例.docx

精品文档1你好 #打开新窗口 ,输入 : #! /usr/bin/python # -*- coding: utf8 -*- s1=input("Input your name:") print ( " 你好 ,%s" % s1) ''' 知识点 : *input("某字符串")函数:显示"某字符串",并等待用户输入. *print()函数:如何打印. *如何应用中文 *如何用多行注释 ''' 2字符串和数字 但有趣的是 , 在 javascript里我们会理想当然的将字符串和数字连接, 因为是动态语言嘛.但在 Python里有点诡异,如下: #! /usr/bin/python a=2 b= "test" c=a+b 运行这行程序会出错, 提示你字符串和数字不能连接, 于是只好用内置函数进行转换 #! /usr/bin/python #运行这行程序会出错 ,提示你字符串和数字不能连接, 于是只好用内置函数进行转换 a=2 b= "test" c=str(a)+b d= "1111" e=a+int(d) #How to print multiply values print ( "c is %s,e is %i"% (c,e)) ''' 知识点 : *用 int 和 str 函数将字符串和数字进行转换 *打印以 # 开头 , 而不是习惯的 // *打印多个参数的方式 '''

3列表 #! /usr/bin/python #-*- coding: utf8 -*- #列表类似 Javascript 的数组 , 方便易用 #定义元组 word=[ 'a' ,'b' , 'c' ,'d' ,'e' , 'f' , 'g' ] #如何通过索引访问元组里的元素 a=word[2] print( "a is: "+a) b=word[1:3] print( "b is: ") print(b) # index 1 and 2 elements of word. c=word[:2] print( "c is: ") print(c) # index 0 and 1 elements of word. d=word[0:] print( "d is: ") print(d) # All elements of word. #元组可以合并 e=word[:2]+word[2:] print( "e is: ") print(e) # All elements of word. f=word[-1] print( "f is: ") print(f) # The last elements of word. g=word[-4:-2] print( "g is: ") print(g) # index 3 and 4 elements of word. h=word[-2:] print( "h is: ") print(h) # The last two elements. i=word[:-2] print( "i is: ") print(i) # Everything except the last two characters l=len(word) print( "Length of word is: "+ str(l)) print( "Adds new element") word.append('h' ) print(word) #删除元素 del word[0] print (word) del word[1:3] print (word) ''' 知识点 :

Python编程实例

目的:用一个实例总结学习到的with语句,函数,列表推导,集合,排序,字符分割等内容 要求:分别以james,julie,mikey,sarah四个学生的名字建立文本文件,分别存储各自的成绩,时间格式都精确为分秒,时间越短成绩越好,分别输出每 个学生的无重复的前三个最好成绩,且分秒的分隔符要统一为“.” 数据准备:分别建立四个文本文件 james.txt 2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22 julie.txt 2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21 mikey.txt 2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38 sarah.txt 2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55 import os os.chdir('C:\Python33\HeadFirstPython\hfpy_code\chapter5') #将工作空间修改为文 件所在的目录 #定义函数get_filedata从文件中取值def get_filedata(filename): try: with open(filename) as f: #with语句打开和自动关闭文件 data=f.readline() #从文件中逐行读取字符 return (data.strip().split(',')) #将字符间的空格清除后,用逗号分隔字符 except IOError as ioerr: print ('File Error' + str(ioerr)) #异常处理,打印错误 return (None)#定义函数modify_time_format将所有文件中的时分表达方式统一为“分.秒”def modify_time_format(time_string): if"-"in time_string: splitter="-" elif":"in time_string: splitter=":" else: splitter="." (mins, secs)=time_string.split(splitter) #用分隔符splitter分隔字符后分别存入mins和secs return (mins+ '.' +secs)#定义函数get_prev_three返回文件中排名前三的不重复的时间成绩 def get_prev_three(filename): new_list=[modify_time_format(each_t) for each_t in get_filedata(filename)] #采用列表推导将统一时分表达方式后的记录生成新的列表 delete_repetition=set(new_list) #采 用集合set函数删除新列表中重复项,并生成新的集合 in_order=sorted(delete_repetition) #采 用复制排序sorted函数对无重复性的新集合进行排序

python经典实例

1 输出你好 #打开新窗口,输入: #! /usr/bin/python # -*- coding: utf8 -*- s1=input("Input your name:") print("你好,%s" % s1) 知识点: * input("某字符串")函数:显示"某字符串",并等待用户输入. * print() 函数: 如何打印. * 如何应用中文 * 如何用多行注释 2 输出字符串和数字 但有趣的是,在javascript 里我们会理想当然的将字符串和数字连接,因为是动态语言嘛. 但在Python 里有点诡异,如下: #! /usr/bin/python a=2 b="test" c=a+b 运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 #! /usr/bin/python #运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换a=2 b="test" c=str(a)+b d="1111" e=a+int(d) #How to print multiply values print ("c is %s,e is %i" % (c,e)) 知识点: * 用int 和str 函数将字符串和数字进行转换 * 打印以#开头,而不是习惯的// * 打印多个参数的方式 #! /usr/bin/python # -*- coding: utf8 -*- #列表类似Javascript 的数组,方便易用 #定义元组word=['a','b','c','d','e','f','g'] #如何通过索引访问元组里的元素a=word[2] print ("a is: "+a) b=word[1:3] print ("b is: ") print (b) # index 1 and 2 elements of word. c=word[:2] print ("c is: ") print (c) # index 0 and 1 elements of word. d=word[0:] print ("d is: ") print (d) # All elements of word.

相关文档
最新文档