最流行的编程入门语言python高手学习笔记Word下载.docx
《最流行的编程入门语言python高手学习笔记Word下载.docx》由会员分享,可在线阅读,更多相关《最流行的编程入门语言python高手学习笔记Word下载.docx(143页珍藏版)》请在冰点文库上搜索。
![最流行的编程入门语言python高手学习笔记Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/6f9b24b2-10bf-4050-aab6-066e55d63b4d/6f9b24b2-10bf-4050-aab6-066e55d63b4d1.gif)
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("
),不管这些,以下均是2.X版本下。
基础知识:
交互式python解释器可以当非常强大的计算器使用
1+1
2
1/2==>
和其他语言一样,不做任何处理的情况下,这个是取整
1.0/2==>
将任意一个数写成浮点形式,则结果会与精度最大的保持一致
0.5
1./2==>
单独写个小数点也行
1//2==>
//这个符号是专门取整的
假如不想每次都要这么费劲一下,我就想在python里执行普通的除法,有办法:
from__future__importdivision==>
注意future左右是两个下划线
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)==>
求幂函数
2**3
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)
==>
出错了
<
spanstyle="
color:
#ff0000;
"
Traceback(mostrecentcalllast):
File"
pyshell#29>
line1,in<
module>
floor(23.5)
NameError:
name'
floor'
isnotdefined<
/span>
importmath==>
引入模块math
math.floor(23.5)
23.0
int(math.floor(23.5))==>
转换为整数
23
那我不想每次都输入math.来调用相应函数,如下写法:
frommathimportfloor
floor(3.2)
cmath和复数:
在高中的时候有复数的预算,比如对一个复数取平方根,python提供了对复数处理的机制,但是要引入cmath模块。
sqrt(-9)
pyshell#35>
sqrt(-9)
sqrt'
isnotdefined
引入math模块也无效
math.sqrt(-9)
pyshell#37>
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()
字符串:
"
双引号会把原字符串按原样显示
'
we'
llgoshopping!
'
SyntaxError:
invalidsyntax
we\'
转义单引号
\"
hello,python!
shesaid"
字符串本身有双引号的情况
shesaid'
+"
python!
字符串拼接
str&
repr:
您可能发现了,不用print打印出的字符串显示出来的时候会被单引号括起来。
所有通过python打印的字符串是被引号括起来的,这是因为python打印值的时候会保持该值在代码中的状态,而不是你希望用户看到的状态。
print'
helloworld'
print10000L
10000
10000L
10000L
这里讨论的实际是值转换成字符串的两种机制,
str函数:
会把值转换为较理性的字符串,以便用户可以理解
repr函数:
会创建一个字符串,以合法的python表达式的形式表示值。
printrepr("
printrepr(100000L)
100000L
printstr("
)==>
显然,用户更希望看到的是str函数处理后的结果
printstr(10000L)
其实python有时候也没有这么智能,在高级语言中,好像数字有时候可以自动转换为字符串型
age=22
myageis"
+age
pyshell#72>
TypeError:
cannotconcatenate'
str'
and'
int'
objects
+str(age)
myageis22
input&
raw_input
这样,我们先运行两个脚本,代码如下:
name=input("
pleaseinputyourname:
hello,"
+name
另一个脚本是将上述input改为raw_input
运行会发现,第一个出错。
其实不运行脚本也行,我么直接在解释器里运行命令吧!
name=input("
pleaseinputname:
Jay
pyshell#74>
name=input("
string>
Jay'
name=raw_input("
其实你只要在input那个下面输入的字符串加上引号就行了,这就是原因。
input会假设用户输入的是python的合法表达式,当然以字符串作为输入的名字肯定没有问题,但是要求用户每次输入一个东西还需要加引号,这不太友好。
想反,raw_input函数会把所有的输入当做原始数据,然后自动将其放入字符串中,所以不会出错,所以我们应尽可能使用raw_input()
长字符串
如果需要写一个很长的字符串,它需要跨多行,可以使用三个单引号,强制换行用反斜杠\
asdgh
agjaw
ag'
asdgh\nagjaw\nag'
1+5+\
4+6
16
python中对多个反斜杠(路径中常用)转义除了加\,可以在整个字串的前面加r
c:
\temp\test.txt'
empest.txt==>
\t是制表符,所以会将\t作为一个制表符显示
\\temp\\test.txt'
用传统的\转义
\temp\test.txt
printr'
在前面加r转义
常用的函数:
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
[['
42],['
45]]
索引:
greeting='
hello'
greeting[0]
h'
greeting[-1]==>
反着的时候从-1而不是0开始开始
o'
digital=raw_input("
year:
)[3]
2013
digital
3'
索引示例:
months=['
January'
'
February'
March'
April'
\
May'
June'
July'
August'
September'
October'
\
November'
December'
]#根据指定的年月日以数字形式打印出日期
endings=['
st'
nd'
rd'
]+17*['
th'
]+['
]+7*['
]#以1-31的数字作为结尾的列表
year=raw_input("
Year:
month=raw_input('
Month(1-12):
3
day=raw_input('
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='
ahref="
http:
//www.python.org"
Pythonwebsite<
/a>
tag[9:
30]
//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]
0]#分片中的最左边的索引比它右边索引的晚出现在序列中,结果就是一个空序列
[]
]#默认到最后
[8,9,10]
numbers[:
3]#默认从第一个开始
[1,2,3]
]#默认全部
[1,2,3,4,5,6,7,8,9,10]
很显然,分片操作的实现需要提供两个索引作为边界,第一个索引的元素包含在分片内,而第二个不包含在分片内。
分片步长:
默认步长没有写,是1,分片格式:
上边界:
下边界:
步长
numbers[0:
10:
1]#默认步长是1
2]#步长设为2
[1,3,5,7,9]
6:
3]#步长设为3
[4]
:
4]
[1,5,9]
numbers[8:
3:
-1]#步长不能为0,因为不会向下执行,可以为负数,向前执行
[9,8,7,6,5]
numbers[10:
0:
-2]#当步长为负数时,开始索引必须大于结束索引
[10,8,6,4,2]
-2]
numbers[5:
[6,4,2]
5:
[10,8]
序列相加:
[1,2,3]+[4,5,6]
[1,2,3,4,5,6]
[1,2,3]+'
world'
#列表和字符串都是序列,但是不能连在一起,两种同类型的序列才能进行连接操作
pyshell#141>
[1,2,3]+'
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)+'
|'
*text_width+'
|'
+sentence+'
结果如下:
in运算符:
检查一个值是否在序列中
permission='
rwx'
#有木有觉得这个像判断Linux中某个文件的执行权限,确实可以这么判断
w'
inpermission
True
xx'
inpe