最流行的编程入门语言python高手学习笔记.docx

上传人:b****7 文档编号:10009328 上传时间:2023-02-07 格式:DOCX 页数:143 大小:754.69KB
下载 相关 举报
最流行的编程入门语言python高手学习笔记.docx_第1页
第1页 / 共143页
最流行的编程入门语言python高手学习笔记.docx_第2页
第2页 / 共143页
最流行的编程入门语言python高手学习笔记.docx_第3页
第3页 / 共143页
最流行的编程入门语言python高手学习笔记.docx_第4页
第4页 / 共143页
最流行的编程入门语言python高手学习笔记.docx_第5页
第5页 / 共143页
点击查看更多>>
下载资源
资源描述

最流行的编程入门语言python高手学习笔记.docx

《最流行的编程入门语言python高手学习笔记.docx》由会员分享,可在线阅读,更多相关《最流行的编程入门语言python高手学习笔记.docx(143页珍藏版)》请在冰豆网上搜索。

最流行的编程入门语言python高手学习笔记.docx

最流行的编程入门语言python高手学习笔记

python高手学习笔记

python学习笔记

(一)——入门1

python学习笔记

(二)——数据类型9

python学习笔记(三)——字符串20

python学习笔记(四)——数据字典25

python学习笔记(五)——语句35

python学习笔记(六)——函数45

python学习笔记(七)——文件和目录操作57

初识Redis及Redis在Windows下的安装和使用64

python小专题——time模块69

python一些小知识76

python小专题——JSON79

python小专题——optparse模块82

python小专题——urllib2模块88

python调用powershell、远程执行bat92

python对MySQL的CRUD102

python检测服务器是否ping通107

python操作excel表格(xlrd/xlwt)110

python学习笔记

(一)——入门

python很多人都非常熟悉,而我作为后知后觉者,虽然慢人一步,但是学习永远不会晚。

其实作为shell,不管是perl还是ruby、powershell等,语法很相似的,我以前没接触过python,现在从最基础的学起,当然对于非常简单的并没有详细记录,简单的准备记录下应该注意的地方。

虽然python3.X的shell工具已经出来了,但是相关教程好像没找到,而且与python2.x语法好多不兼容。

所以我的学习环境是pythonshell2.7,也是目前最稳定和常用的版本吧。

娱乐阶段:

学习python之前,先来看看python的设计哲学,我觉得GuidovanRossum一定是个有趣的人,能将设计思想展现在python解释器中,呵呵。

输入importthis命令:

Python2.7.3(default,Apr102012,23:

31:

26)[MSCv.150032bit(Intel)]onwin32

Type"copyright","credits"or"license()"formoreinformation.

>>>importthis

TheZenofPython,byTimPeters

Beautifulisbetterthanugly.优美胜于丑陋

Explicitisbetterthanimplicit.明了胜于晦涩

Simpleisbetterthancomplex.简单胜过复杂

Complexisbetterthancomplicated.复杂胜过凌乱

Flatisbetterthannested.扁平胜于嵌套

Sparseisbetterthandense.间隔胜于紧凑

Readabilitycounts.可读性很重要

Specialcasesaren'tspecialenoughtobreaktherules.即使假借特例的实用性之名,也不违背这些规则

Althoughpracticalitybeatspurity.虽然实用性次于纯度

Errorsshouldneverpasssilently.错误不应该被无声的忽略

Unlessexplicitlysilenced.除非明确的沉默

Inthefaceofambiguity,refusethetemptationtoguess.当存在多种可能时,不要尝试去猜测

Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.应该有一个,最好只有一个,明显能做到这一点

Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.虽然这种方式可能不容易,除非你是python之父

Nowisbetterthannever.现在做总比不做好

Althoughneverisoftenbetterthan*right*now.虽然过去从未比现在好

Iftheimplementationishardtoexplain,it'sabadidea.如果这个实现不容易解释,那么它肯定是坏主意

Iftheimplementationiseasytoexplain,itmaybeagoodidea.如果这个实现容易解释,那么它很可能是个好主意

Namespacesareonehonkinggreatidea--let'sdomoreofthose!

命名空间是一种绝妙的理念,应当多加利用

>>>

哈哈,和一般的语言不同,在“helloworld”程序开始之前,它还有一番人生哲学啊。

初步入门:

第一个python程序:

(和其他脚本一样,可以按tab键快速选择)

>>>print"helloworld"==>print是一个函数

helloworld

>>>

这个在python3.0的解释器中运行是错误的,应该写成:

print("helloworld"),不管这些,以下均是2.X版本下。

基础知识:

交互式python解释器可以当非常强大的计算器使用

>>>1+1

2

>>>1/2==>和其他语言一样,不做任何处理的情况下,这个是取整

0

>>>1.0/2==>将任意一个数写成浮点形式,则结果会与精度最大的保持一致

0.5

>>>1./2==>单独写个小数点也行

0.5

>>>1//2==>//这个符号是专门取整的

0

>>>

假如不想每次都要这么费劲一下,我就想在python里执行普通的除法,有办法:

>>>from__future__importdivision==>注意future左右是两个下划线

>>>1/2

0.5

>>>1//2==>在这种情况下你反而想取整数部分了,使用//

>>>0

>>>1.//2

>>>0.0

长整型和进制:

>>>958346283662845==>2.2版本以前是不能处理长整型的,范围是-2147483648~2147483647

958346283662845L==>L表示长整型,而且是大写

>>>0xAF==>16进制

175

>>>010==>8进制(010首数字是0,表8进制)

8

>>>

获取用户输入:

>>>x=input("x=")

x=3

>>>y=input("y=")

y=4

>>>x*y

12

函数:

>>>pow(2,3)==>求幂函数

8

>>>2**3

8

>>>abs(-10)==>取绝对值

10

>>>round(5/2)==>这里是先算5/2,即2,所以round

(2)=2.0

2.0

>>>round(2.5)==>把浮点数四舍五入为最接近的整数值

3.0

>>>floor(32.9)==>取为不大于该数的最大整数

32

模块:

>>>floor(23.5)

==>出错了

#ff0000;">Traceback(mostrecentcalllast):

File"",line1,in

floor(23.5)

NameError:

name'floor'isnotdefined

>>>importmath==>引入模块math

>>>math.floor(23.5)

23.0

>>>int(math.floor(23.5))==>转换为整数

23

>>>

那我不想每次都输入math.来调用相应函数,如下写法:

>>>frommathimportfloor

>>>floor(3.2)

3.0

cmath和复数:

在高中的时候有复数的预算,比如对一个复数取平方根,python提供了对复数处理的机制,但是要引入cmath模块。

>>>sqrt(-9)

Traceback(mostrecentcalllast):

File"",line1,in

sqrt(-9)

NameError:

name'sqrt'isnotdefined

>>>importmath==>引入math模块也无效

>>>math.sqrt(-9)

Traceback(mostrecentcalllast):

File"",line1,in

math.sqrt(-9)

ValueError:

mathdomainerror

>>>importcmath==>引入cmath模块

>>>cmath.sqrt(-9)

3j

>>>(1+3j)*(9-2j)==>还可以进行计算

(15+25j)

>>>

(__future__这个模块比较特别,它可以导入那些在未来会成为标准python组成的新特性)

保存并执行程序:

现在建一个python文件,扩展名是.py,把print"hellopython!

"写入,双击,我们看到的是一闪而过的一个黑框,我记得在执行C#窗体程序的时候也会出现这种情况,只要在主程序结尾加上"Console.ReadKey()"就行了,这里也是,要给控制台一个提醒输入的机会,不然运行完就退出了,在结尾加一个语句:

raw_input()。

再双击即可弹出“hellopython!

执行这个文件hello.py

name=raw_input("whatisyouname:

")

print"hello"+name+"!

"

raw_input()

字符串:

>>>"hellopython!

"==>双引号会把原字符串按原样显示

'hellopython!

'

>>>"we'llgoshopping!

"

"we'llgoshopping!

"

>>>'we'llgoshopping!

'

SyntaxError:

invalidsyntax

>>>'we\'llgoshopping!

'==>转义单引号

"we'llgoshopping!

"

>>>"\"hello,python!

\"shesaid"==>字符串本身有双引号的情况

'"hello,python!

"shesaid'

>>>"hello"+"python!

"==>字符串拼接

'hellopython!

'

str&repr:

您可能发现了,不用print打印出的字符串显示出来的时候会被单引号括起来。

所有通过python打印的字符串是被引号括起来的,这是因为python打印值的时候会保持该值在代码中的状态,而不是你希望用户看到的状态。

>>>print"helloworld"

helloworld

>>>print'helloworld'

helloworld

>>>"helloworld"

'helloworld'

>>>'helloworld'

'helloworld'

>>>print10000L

10000

>>>10000L

10000L

>>>

这里讨论的实际是值转换成字符串的两种机制,

str函数:

会把值转换为较理性的字符串,以便用户可以理解

repr函数:

会创建一个字符串,以合法的python表达式的形式表示值。

>>>printrepr("hellopython!

")

'hellopython!

'

>>>printrepr(100000L)

100000L

>>>printstr("hellopython!

")==>显然,用户更希望看到的是str函数处理后的结果

hellopython!

>>>printstr(10000L)

10000

>>>

其实python有时候也没有这么智能,在高级语言中,好像数字有时候可以自动转换为字符串型

>>>age=22

>>>print"myageis"+age

Traceback(mostrecentcalllast):

File"",line1,in

print"myageis"+age

TypeError:

cannotconcatenate'str'and'int'objects

>>>print"myageis"+str(age)

myageis22

>>>

input&raw_input

这样,我们先运行两个脚本,代码如下:

name=input("pleaseinputyourname:

")

print"hello,"+name

另一个脚本是将上述input改为raw_input

运行会发现,第一个出错。

其实不运行脚本也行,我么直接在解释器里运行命令吧!

>>>name=input("pleaseinputname:

")

pleaseinputname:

Jay

Traceback(mostrecentcalllast):

File"",line1,in

name=input("pleaseinputname:

")

File"",line1,in

NameError:

name'Jay'isnotdefined

>>>name=raw_input("pleaseinputname:

")

pleaseinputname:

Jay

其实你只要在input那个下面输入的字符串加上引号就行了,这就是原因。

input会假设用户输入的是python的合法表达式,当然以字符串作为输入的名字肯定没有问题,但是要求用户每次输入一个东西还需要加引号,这不太友好。

想反,raw_input函数会把所有的输入当做原始数据,然后自动将其放入字符串中,所以不会出错,所以我们应尽可能使用raw_input()

长字符串

如果需要写一个很长的字符串,它需要跨多行,可以使用三个单引号,强制换行用反斜杠\

>>>'''asdgh

agjaw

ag'''

'asdgh\nagjaw\nag'

>>>1+5+\

4+6

16

>>>

python中对多个反斜杠(路径中常用)转义除了加\,可以在整个字串的前面加r

>>>print'c:

\temp\test.txt'

c:

empest.txt==>\t是制表符,所以会将\t作为一个制表符显示

>>>print'c:

\\temp\\test.txt'==>用传统的\转义

c:

\temp\test.txt

>>>printr'c:

\temp\test.txt'==>在前面加r转义

c:

\temp\test.txt

>>>

常用的函数:

abs(number)、cmath.sqrt(number)、float(object)、help()、input(prompt)、int(object)、long(object)、math.ceil(number)(返回上入整数)、math.floor(number)(返回下舍整数)、pow(x,y)、raw_input(prompt)、repr(object)、str(object)、round(number[.ndigits])

python学习笔记

(二)——数据类型

python数据结构

学一门语言,最基础和重要的就是数据结构了,而在python中最基本的数据结构是序列,也可以理解为数组,但貌似比数组强大。

>>>jason=['jason',42]

>>>james=['james',45]

>>>database=[jason,james]

>>>database

[['jason',42],['james',45]]

>>>

索引:

>>>greeting='hello'

>>>greeting[0]

'h'

>>>greeting[-1]==>反着的时候从-1而不是0开始开始

'o'

>>>digital=raw_input("year:

")[3]

year:

2013

>>>digital

'3'

索引示例:

>>>months=['January','February','March','April',\

'May','June','July','August','September','October'\

'November','December']#根据指定的年月日以数字形式打印出日期

>>>endings=['st','nd','rd']+17*['th']+['st','nd','rd']+7*['th']+['st']#以1-31的数字作为结尾的列表

>>>year=raw_input("Year:

")

Year:

2013

>>>month=raw_input('Month(1-12):

')

Month(1-12):

3

>>>day=raw_input('Day(1-31):

')

Day(1-31):

30

>>>month_num=int(month)

>>>day_num=int(day)

>>>month_name=months[month_num-1]==>注意这里索引要减1

>>>ordinal=day+endings[day_num-1]

>>>printmonth_name+''+ordinal+','+year

March30th,2013

>>>

分片:

使用索引能访问单个元素,使用分片能访问一定范围的元素,分片通过冒号相隔的两个索引来实现。

>>>tag='

//www.python.org">Pythonwebsite'

>>>tag[9:

30]

'http:

//www.python.org'

>>>tag[32:

-4]

'Pythonwebsite'>>>

>>>numbers=[1,2,3,4,5,6,7,8,9,10]

>>>numbers[3:

6]

[4,5,6]

>>>numbers[-3:

-1]

[8,9]

>>>numbers[-3:

0]#分片中的最左边的索引比它右边索引的晚出现在序列中,结果就是一个空序列

[]

>>>numbers[-3:

]#默认到最后

[8,9,10]

>>>numbers[:

3]#默认从第一个开始

[1,2,3]

>>>numbers[:

]#默认全部

[1,2,3,4,5,6,7,8,9,10]

很显然,分片操作的实现需要提供两个索引作为边界,第一个索引的元素包含在分片内,而第二个不包含在分片内。

分片步长:

默认步长没有写,是1,分片格式:

上边界:

下边界:

步长

>>>numbers[0:

10:

1]#默认步长是1

[1,2,3,4,5,6,7,8,9,10]

>>>numbers[0:

10:

2]#步长设为2

[1,3,5,7,9]

>>>numbers[3:

6:

3]#步长设为3

[4]

>>>numbers[:

:

4]

[1,5,9]

>>>numbers[8:

3:

-1]#步长不能为0,因为不会向下执行,可以为负数,向前执行

[9,8,7,6,5]

>>>numbers[10:

0:

-2]#当步长为负数时,开始索引必须大于结束索引

[10,8,6,4,2]

>>>numbers[0:

10:

-2]

[]

>>>numbers[:

:

-2]

[10,8,6,4,2]

>>>numbers[5:

:

-2]

[6,4,2]

>>>numbers[:

5:

-2]

[10,8]

>>>

序列相加:

>>>[1,2,3]+[4,5,6]

[1,2,3,4,5,6]

>>>[1,2,3]+'world'#列表和字符串都是序列,但是不能连在一起,两种同类型的序列才能进行连接操作

Traceback(mostrecentcalllast):

File"",line1,in

[1,2,3]+'world'

TypeError:

canonlyconcatenatelist(not"str")tolist

>>>

序列乘法:

>>>'python'*5

'pythonpythonpythonpythonpython'

>>>[25]*10

[25,25,25,25,25,25,25,25,25,25]

空列表可以简单的通过[]表示,但若想要创建一个占用十个元素空间,却不包括任何有用的有用的内容列表。

这时需要使用None,None是Python的内建值,初始化一个长度为10的列表如下:

>>>sequence=[None]*10

>>>sequence

[None,None,None,None,None,None,None,None,None,None]

序列乘法示例:

(存在脚本中运行)

sentence=raw_input("Sentence:

")

screen_width=60

text_width=len(sentence)

box_width=text_width+6

left_margin=(screen_width-box_width)//2

print

print''*left_margin+'+'+'-'*(box_width-2)+'+'

print''*left_margin+'|'+''*text_width+'|'

print''*left_margin+'|'+sentence+'|'

print''*left_margin+'|'+''*text_width+'|'

print''*left_margin+'+'+'-'*(box_width-2)+'+'

print

raw_input()

结果如下:

in运算符:

检查一个值是否在序列中

>>>permission='rwx'#有木有觉得这个像判断Linux中某个文件的执行权限,确实可以这么判断

>>>'w'inpermission

True

>>>'xx'inpe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1