趁暑假空闲学一下python以后可能有用,mark一下书之外需要补充的知识点,避免淹没在砖头书中查不到,用于学习记忆和查询回顾(针对3.0):
关于打印:
1)转义字符 ‘\’ :常用于一些容易引起歧义的地方,如单引号的打印(eg:‘Let'\s go’而不能直接打印‘Let's go’)、绝对路径的打印(如直接打印D:\application\visual studio\GaussianFilter\FastGaussFilter,路径名中如果首字母出现r、t、n等,会被解读成制表符等,可以选择加上转义字符避免这种情况的出现D:\\application\visual studio\\GaussianFilter\\FastGaussFilter)
另外,也可直接将整个字符读取为原始字符串方式,如r'D:\application\visual studio\GaussianFilter\FastGaussFilter'.
2)print在python3.0中定义为函数形式,原型为:
print([obj,...][,sep=' '],[,end='\n'][,file=sys.stdout])
其中,sep是多变量打印的间隔参数,默认是‘ ’,空格,也就是说多变量打印以空格隔开,可设置(eg:print(a,b,spe='...'),使用三个点隔开);同理end是打印完毕的结束符,默认是换行符,可修改进而实现同行多输出等小功能。
简单例程:
#x=5
#y='a'
#z='asd'
#print(x,y,z,sep=' ',end='...\n')
#import sys
#sys.stdout.write('hellow')
后面的两句话为了进一步了解print在stdout的一般性测试的。
分支和循环
1)if 、elif、else均注意后面有冒号!
(elif和if是并列的,不缩进)
scr=int(input('Please input your grade: '))
while not(0<=scr<=100) :
scr=int(input('Input the right score!'))
if scr>90:
print('A')
elif scr>80:
print('B')
elif scr>60:
print('C')
else:
print('D')
2)循环结构
while 条件:
循环体
(记住有冒号,区别于C/C++的括弧)
for <target> in <obkect>:
<statement>
else:
<statement>
py中的for循环十分强大,很6的,可以理解为:for循环运行时,是将obj中的元素逐个得赋值到tar中,然后每个元素都执行一遍循环体,该过程就是一种遍历,应用十分广泛,如果加上else模块,就是遍历结束之后没有碰到break语句自动执行。
range()函数
常与for循环共同使用,其原型为:range([,start],stop,[,step=1])
其中[ ]括起来的参数表示可选,start默认值为0,step步长的默认值是1,则range()的功能是生成一个从start到stop参数步长为step的数字序列。
(注意:生成的序列包括start,但是不包括stop !)
break和continue:
和c类似,一个是跳出循环,一个是跳出本次循环。
3)else语句
可以和while或者for语句配合使用。
数据类型关系
1)数据类型转换
int()
float()
str()
三种函数的直接转换极其方便(在可转换的情况下)
注意:变量命名尽量不要使用上述函数名,python不会警报,但是会进行变量更新进而逻辑出错,如下图:
由于已经给str赋值为字符串了,再调用该函数他会优先认为str是一个变量不是函数而报错。
2)数据类型判定
type(var):返回变量类型
isinstance(var,dst_type):返回布尔量
3)补充一些运算符:
python3中的除法得到的是精确结果,不会自动取整;但是玩家可以自行选择地板除法(floor),用双斜杠进行除法,得到整数,(实际的floor除法含义是——向下舍入,而不是单纯的截断,对于负数尤为重要)如图:
。
**: 表示幂,如3**2输出为9
%:取余
运算符的优先级:
几个数据类型
1)数字
python的整型数字没有长度限制;
比较操作符的连续使用(X<Y<Z);
2)字符串
字符串具有不可变性,一旦创建不可修改;
字符串的操作:http://www.runoob.com/python/python-strings.html
字符串格式化:和C语言中的类似,但是注意,不加逗号用空格。可以理解为,将后面的变量按照前面的字符表达式形式输出。
3)列表
列表可以为混合数据类型;
列表具有有序性,可索引,可嵌套(实现矩阵);
列表长度可变,如向列表中添加元素append、extend、insert,删除元素用del、remove、pop等。
<注:查看属性和方法,可用dir()+help()组合大法>
列表创建list();
如下操作:
(py的索引都是左闭右开)ccccc
4)元组
可以理解为不能修改的列表,其构成特点是圆括弧和逗号;
元组同样可以有复杂的嵌套方式;
元组创建和转化tuple()。创建单元素元组时(1,)形式;
5)字典
字典是一种映射类型,具有无序性,元素以键值对的形式存在;
索引类似于元组和列表,仍是用[ ];
字典的创建({}、dict(maping)):
注意括号的个数!dict()只传递一个参数,因此需要将元素括起来。创建方式多样,略。
字典的其他操作:
查看元素:in / not in + [键]
修改、删除
6)集合
用花括号表示,如set={1,2,4}.集合的元素是唯一的,无序的,不可索引;
可使用set()创建集合
函数
类似C/C++的部分较多,不赘述;
需要注意的地方:收集参数机制和关键字参数。参见:http://www.cnblogs.com/way_testlife/archive/2011/03/31/2001646.html
如下:
python的函数有一个很有趣的机制:不能通过函数修改全局变量!当函数试图修改全局变量时,会创造一个该变量的拷贝进行操作,而全局变量不变,避免了参数的混乱。如下:
关键字global:可以将函数内部的局部变量变为全局。(eg:global sum);
函数可内嵌,闭包;
lambda表达式创建匿名函数:(顾名思义,可以不用定义函数名,简化代码)
其他内建函数BIF:http://www.runoob.com/python/python-built-in-functions.html
递归:
阶乘实现:
汉诺塔游戏攻略:
文件
类似C/C++;
文件系统;
数据的永久储存:pickle库(序列化和反序列化):https://blog.csdn.net/coffee_cream/article/details/51754484
异常处理
异常类型:http://www.runoob.com/python/python-exceptions.html;
try+except 语句处理和响应异常;with语句
raise引发异常;