Python入门经典实例1_第1页
Python入门经典实例1_第2页
Python入门经典实例1_第3页
Python入门经典实例1_第4页
Python入门经典实例1_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1你好

#打开新窗口,输入:

#!/usr/bin/python

#coding:utf8

sl=input("Inputyourname:")

print("你好,%s"%si)

知识点:

*input(”某字符串”)函数:显示”某字符串“,并等待用户输入.

*print。函数:如何打印.

*如何应用中文

*如何用多行注释

HI

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="llH"

e=a+int(d)

#Howtoprintmultiplyvalues

print("cis%s,eis%i"%(c,e))

111

知识点:

*用int和str函数将字符串和数字进行转换

*打印以#开头,而不是习惯的//

*打印多个参数的方式

3列表

#!/usr/bin/python

#coding:utf8

#列表类似Javascript的数组,方便易用

#定义元组

word=['a,,,bVc','d';e','f7g']

#如何通过索引访问元组里的元素

a=word[2]

print("ais:"+a)

b=word[l:3]

print("bis:")

print(b)#index1and2elementsofword.

c=word[:2]

print("cis:")

print(c)#index0and1elementsofword.

d=word[0:]

print("dis:")

print(d)#Allelementsofword.

#元组可以合并

e=word[:21+word[2:]

print("eis:")

print(e)#Allelementsofword.

f=word[-l]

print("fis:")

print(f)#Thelastelementsofword.

g=word[-4:-2]

print("gis:")

print(g)#index3and4elementsofword.

h=word[-2:]

print("his:")

print(h)#Thelasttwoelements.

i=word[:-2]

print("iis:")

print(i)#Everythingexceptthelasttwocharacters

l=len(word)

print("Lengthofwordis:"+str(l))

print("Addsnewelement")

word.append('h')

print(word)

#删除元素

delword10]

print(word)

delword|1:3]

#!/usr/bin/python

word="abcdefg"

a=word[2)

print("ais:"+a)

b=word[l:3]

print("bis:"+b)#index1and2elementsofword.

c=word[:2]

print("cis:"+c)#index0and1elementsofword.

d=word[0:]

print("dis:"+d)#Allelementsofword.

e=word[:2]+word[2:]

print("eis:"+e)#Allelementsofword.

f=word[-l]

print("fis:"+f)#Thelastelementsofword.

g=word[-4:-2]

print("gis:"+g)#index3and4elementsofword.

h=word[-2:]

print("his:"+h)#Thelasttwoelements.

i=word[:-2]

print("iis:"+i)#Everythingexceptthelasttwocharacters

l=len(word)

print("Lengthofwordis:"+str(l))

中文和英文的字符串长度是否一样?

#!/usr/bin/python

#coding:utf8

s=input(”输入你的中文名,按回车继续");

print("你的名字是:"+s)

l=len(s)

print("你中文名字的长度是:“十str(l))

知识点:

•类似Java,在python3里所有字符串都是unicode,所以长度一致.

6条件和循环语句

#!/usr/bin/python

#条件和循环语句

x=int(input("Pleaseenteraninteger:"))

ifx<0:

x=0

print("Negativechangedtozero")

elifx==0:

print("Zero")

else:

print("More")

#LoopsList

a=['cat','window','defenestrate']

forxina:

print(x,len(x))

#知识点:

#*条件和循环语句

#*如何得到控制台输入

7函数

#!/usr/bin/python

#-*-coding:utf8

defsum(a,b):

returna+b

func=sum

r=func(5,6)

print(r)

#提供默认值

defadd(a,b=2):

returna+b

r=add(l)

print(r)

r=add(l,5)

print(r)

一个好用的函数

#!/usr/bin/python

#-*-coding:utf8-*-

#Therangedfunction

a=range(1,W)

foriina:

print(i)

a=range(-2,-l1,-3)#The3rdparameterstandsforstep

foriina:

print(i)

知识点:

•Pytho.不用{}来控制程序结构,他强迫你用缩进来写程序,使代码清晰.

•定义函数方便简单

•方便好用的range函数

8异常处理

#!/usr/bin/python

s=input("Inputyourage:")

ifs=="n:

raiseExceptionf'Inputmustnobeempty.")

try:

i=int(s)

exceptExceptionaserr:

print(err)

finally:#Cleanupaction

print("Goodbye!")

9文件处理

对比Java,python的文本处理再次让人感动

#!/usr/bin/python

spath="D:/download/baa.txt"

f=open(spath,"w")#Openswriting.Createsthis'texist.

f.writef'Firstline

f.writelines("Firstline2.")

f.closed

f=open(spath,"r")#Opensreading

forlineinf:

print("每一行的数据是:%s"%Hne)

f.closed

知识点:

•open的参数:r表示读,w写数据,在写之前先清空文件内容,a打开并附

加内容.

•打开文件之后记得关闭

10类和继承

classBase:

def―init_(self):

self.data=[]

defadd(self,x):

self.data.append(x)

defaddtwice(self,x):

self.add(x)

self.add(x)

#ChildextendsBase

classChild(Base):

defplus(self,a,b):

returna+b

oChild=Child()

oChilci.adci("strr,)

print(oChild.data)

print(oChild.plus(2,3)i

111

知识点:

*self:类似Java的this参数

11包机制

每一个py文件称为一个module,module之间可以互相导入.请参看以卜.例

子:

#a.py

defadd_func(a,b):

returna+b

#b.py

fromaimportadd_func#Alsocanbe:importa

print("Importadd_funcfrommodulea")

print("Resultof1plus2is:")

print(add_func(l,2))#Ifusing"importa",thenhereshouldbe"a

.add_func"

module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有

一个parent文件夹,该文件夹有一个child子文件夹.child中有一个

modul.a.p..如何让Python知道这个文件层次结构?很简单,每个目录都放一

个名为的文件.该文件内容可以为空.这个层次结构如下所示:

parent

-_init_.py

—child

-__init_.py

-a.py

b.py

那么Python如何找到我们定义的module?在标准包sys中,path属性记录

了Python的包路径.你可以将之打印出来:

importsys

print(sys.path)

通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境

变量会自动添加到sys.path属性.另一种方便的方法是编程中直接指定我们

的module路径到sys.path中:

importsys

importos

sys.path.append(os.getcwd()+'\\parent\\child')

print(sys.path)

fromaimportadd_func

print(sys.path)

print("Importadd_funcfrommodulea")

print("Resultof1plus2is:")

print(add_func(l,2))

知识点:

•如何定义模块和包

•如何将模块路径添加到系统路径,以便python找至IJ它们

•如何得到当前路径

12内建帮助手册

对比C++,Java的突出进步是内建Javadoc机制,程序员可以通过阅读

Javadoc了解函数用法.Python也内建了一些方便函数以便程序员参考.

•dir函数.查看某个类/对象的方法.如果有某个方法想不起来,请敲dir.

在idle里,试.dirQist.

help函数.详细的类/对象介绍.在idle里.试.help(list)

1遍历文件夹和文件

impor.os

impor.os.path

.os,os.path里包含大多数文件访问的函数,所以要先引入它们.

.请按照你的实际情况修改这个路.

rootdir....d:/downloa..

fo.parent,dirnames,.i.os.walk(rootdir):

..case1.

.fo.dirname.i.dirnames:

.prin...parentis....parent)

.prin...dirnameis....dirname)

..case.

.fo..i.:

.prin...parentis....parent)

.prin...withfullpath....os.path.join(parent,))

”.知识点:

*os.walk返回一个三元组.其中dirnames是所有文件夹名字(不包含路

径),是所有文件的名字(不包含路径).parent表示父目录.

*easel演示了如何遍历所有目录.

*case2演示了如何遍历所有文件.

*os.path.joinfdirname,):将形如"/a/b/c"和"d.java”变成

/a/b/c/d.java".

2分割路径和文件名

impor.os.path

.常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件

的扩展名.

.根据你机器的实际情况修改下面参数.

spat…D:/download/repository.7..

.case1.

p,..os.path.split(spath);

prin...diris...p)

prin......f)

.case2.

drv,lef..os.path.splitdrive(spath);

prin...driveris...drv)

prin...leftis...left)

.case3.

f,ex..os.path.splitext(spath);

prin...fis...f)

prin...extis...ext)

知识点:这三个函数都返回二元组.

*easel分隔目录和文件名

*case2分隔盘符和文件名

*case3分隔文件和扩展名

总结:5个函数

・os.walk(spath)

•os.path.split(spath)

•os.path.splitdrive(spath)

•os.path.splitext(spath)

•os.path.join(path1,path2)

3复制文件

impor.shutil

impor.os

impor.os.path

sr...d:\\download\\test\\m..

ds...d:\\download\\test\\m..

dst...d:/download/test/测试文件夹.tx..

dir..os.path.dirname(src)

prin...dirl%...dirl)

i.(os.path.exists(src.=.False):

os.makedirs(dirl)

f..open(src....)

tl.write..linea\..)

fl.write..lineb\..)

fl.closef)

shutil.copy,dst)

shutil.copy,dst2)

f..open(dst....)

fo.line.1.f2:

.prin.(line)

f2.closef)

.测试复制文件夹.

tr.:

srcDi...d:/download/tes..

dstDi...d:/download/test..

..如果dstDir已经存在,那么shutil.copytree方法会报错.

..这也意味着你不能直接用d:作为目标路径.

shutil.copytree(srcDir,dstDir)

excep.Exceptionaserr:

.prin.(err)

H

*

知识点:

*shutil.copyfile:如何复制文件

*os.path.exists:如何判断文件夹是否存在

*shutil.copytree:如何复制目录树

H

总结:4个函数

•os.path.dimame(path)

•os.path.exists(path)

•shutil.copy,dst)

•shutil.copytree(srcDir,dstDir)

4实战:文件备份小程序

importos

importshutil

importdatetime

作用:将目录备份到其他路径。

实际效果:

假设给定目录7media/data/programmer/project/python",

备份路径"/home/diegoyun/backup/",

则会将python目录备份到备份路径下,形如:

/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/z

zz..

用法:更改这两个参数.

backdir:备份目的地.

copydirs:想要备份的文件夹.

111

defmainLogic():

#adddirsyouwanttocopy

backdir="d:\\test"

print(backdir)

copydirs=[

copydirs.append("d:\\temp");

#copydirs.appended:\\test");

print("Copyingfiles===================")

start=datetime.datetime.now()

#genadatafolderforbackup

backdir=os.path.join(backdir,start.strftime("%Y-%m-%d"))

#printf'backdiris:"+backdir)

kc=0

fordincopydirs:

kc=kc+copyFiles(d,backdir)

end=datetime.datetime.now()

print(11Finished!===================*')

print("Totalfiles:"+str(kc))

print("Elapsedtime:"+str((end-start).seconds)+

"seconds")

defcopyFiles(copydir,backdir):

prefix=getPathPrefix(copydir)

#printf'prefix运厂+prefix)

i=0

fordirpath,dirnames,inos.walk(copydir):

fornamein:

oldpath=os.path.join(dirpath,name)

newpath=omitPrefix(dirpath,prefix)

print("backdiris:"十backdir)

new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论