1、 笔记简介:面向对象、解释型语言,特点:语法简洁而清晰、丰富和强大的类库、能够轻松的联结其他语言,用于三种场合:shell实现工具(不适合)、控制语言(将其他程序编写的库,通过Python调用,作为一种胶水语言)、框架,解释器:字节码(bytecode)Python的实现:原始的实现方式(CPython)、用于与java语言集成的实现(Jython)、用于与.net框架集成的实现(IronPython)Python程序分为:模块、语句、表达式、对象1) 程序有模块构成2) 模块包含语句3) 语句包含表达式4) 表达式建立并处理对象面向过程:以指令为中心,由指令处理数据,如何组织代码解决问题面向
2、对象:以数据为中心,所有的处理代码都围绕数据展开,如何组织数据结构(或者如何设计数据结构组织数据,并提供对此类数据允许处理操作)数据结构:Python最基本的数据结构是序列,序列中每一个元素都被分配一个序号(索引),从0开始,Python中包含6种内建的数据序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象、缓冲区。例如,lista,b:从索引a开始到b-1结束,索引位置从0开始基本数据类型:1) Integral:整型(不可变)和boolean2) 浮点型:浮点数和复数和十进制数字3) 字符串:不区分单引号和双引号(不可变)4) 序列类型:列表可变:可直接修改
3、内容,id不会改变,但是变得是变量名的引用、元组(不可变)。实质上,列表和元组并不真正存储数据,而是存放对象引用调用方法type可知道变量的类型,例如,type(num)1. 运算符1) 算术运算符:加减乘除、取余、取商、幂计算注意:/与/的区别:在类型是float与double类型时,/是全计算,/是取商(与java不一样);不能使用+,-操作2) 逻辑运算符:与and 或 or非 not,is(判断is左右两边引用是否相等)3) 比较运算符:大于、小于、不等于、等于4) 赋值运算符:=、+=、-=5) 优先级:幂、乘除、取余、取商、加减、比较2. 基本语法赋值:x=2输出:print he
4、llo3. 布尔类型在进行运算时,True 就表示1,False表示0,none表示0例如,print True+1输出1;print False*3输出04. 算法的三大结构:顺序、判断、循环5. Python的控制流语句 :if、while、forin、tryif语句例子,a =3b = 2c =1if ab: t = b b = a a = t if ac: t = c c = a a = t if bc: t = c c = b b = tprint a,b,cwhile循环:break:跳出当前循环 彻底终止循环;continue:continue之后的代码不执行,然后继续下一次的循
5、环注意:a 如果小于0的时候FALSE,终止while循环for 循环:for 变量名 in 范围:print 变量名例如:list=1,2,1,2习题:1).使用for循环实现1到1000的数字之和; 2).统计字符串str=idfalksdjfldkjieakdsfnakdsfreikndkfnaskfdeuwhfrkdnfaksdnfkasdhfurehfkndfkasyurplldsnkjdlfkajdfjldskjflsadjfldskjfirejfakdsflsajfdlkasjdflkjadjfalkjfkasdjfiajefoijaewlkjflksadjfklajdfklaj
6、lfdjaldfjalksjfladjfldfjsadkfjsalkjflafjaljflasdj中a到z的个数。3).PokerGame中的买牌def buynewpoker(): color= 红桃,黑桃,梅花,方片 value=A,1,2,3,4,5,6,7,8,9,10,J,Q,K wangpai=大王,小王 list= list.append(wangpai0) list.append(wangpai1) for i in range(len(value): for j in range(len(color): list.append(colorj+valuei) return li
7、st4).洗牌import randomdef washpoker(list): reslist= count=0 while countlen(list): a=random.randint(0,53) if lista not in reslist : reslist.append(lista) count+=1 for m in reslist: print mreturn reslistwashpoker(list)5) .摸牌def grouppoker(list): obj= list1= list2= list3= list4= for i in range(17): list1
8、.append(list3*i) list2.append(list3*i+1) list3.append(list3*i+2) for j in range(51,54): list4.append(listj) obj=list1,list2,list3,list4 for m in range(len(obj): for j in range(len(objm): print objmj print - return grouppoker(washpoker(list)6) 叫牌:1. 将摸好的牌随机分给三个玩家2. 叫地主:传过来的玩家名字,将底牌分配给他7)1000以内的完数coun
9、t=0for i in range(2,1001): sum=0 for j in range(1,i): if i%j=0: sum +=j if i=sum: count+=1print count8)1,2,3,4组成不重复且数字也不重复的三位数count=0for i in range(1,5): for j in range(1,5): for k in range(1,5): if i!=j and i!=k and j!=k: count+=1print i,j,kprint count6. 输入与输出:input()/raw_input()与print语句格式化输出:print
10、 String %format1 %format2 %(variable1,variable,)例如,num = 7.9 print the num is %f %num/print the num is %d %num7.常用函数:dir(obj):显示对象属性,如果没有提供参数,那么显示全局变量的名字help(obj):显示对象文档len(obj):返回对象长度range():返回一个整数列表,从0开始range(a,b):返回从a开始到b-1的列表,range(a,b,c):c是步长int(obj):转成int类型str(obj):转成字符串类型type(obj):返回对象类型appen
11、d(obj):给列表添加一个元素extend(obj):参数中的列表添加到自身列表的末尾insert(a,b):从索引值为a的位置添加一个元素b,所以list.insert(0,x)相当于list.append()remove(x):删除列表中第一个值为x的函数,如果没有,那么这个函数就会执行报错。pop(i):删除列表指定位置的元素并返回它。i表示这个参数是可选的,如果不输入,将删除最后一个元素并返回index(x):返回第一次出现x元素的索引值count(x):统计元素x的个数reverse():反转列表中的元素random.randint:random.randint()的函数原型为:r
12、andom.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a = n b,则生成的随机数n: a = n = b。如果 a b, 则 b = n = a。random.randomrandom.random()用于生成一个0到1的随机符点数: 0 = n listj+1: temp = listj+1 listj+1=listj listj=temp return list8.python语句和语法标识符:大小写敏感Python关键字列表和iskeyword()错误:expected an indented block;解决:首行缩
13、进4个字符9.模块debugger:pdb允许断点调试,检查堆栈,还支持事后调试logger:loggging分紧急、错误、警告、信息、调试五级日志10.对象三个特征:身份(对象的内存地址)、类型(type()查看对象类型)、值(数据项)所有的对象都有boolean值对象身份的比较:is/is not 用来比较两个别名是否引用同一个对象内建模块:dir(_builtins_):两个下划线help(关键字),例如help(str)在方法体中使用space空格键控制代码对齐callable()可用于测试函数是否可调用自动载入内置模块:import,导入一个模块后,可以使用模块名.方法名的形式,避免
14、与内置模块中的方法冲突不支持的类型有:char、byte、pointer11.数字1)支持的数字类型:整型、长整型、布尔类型、双精度浮点型、十进制浮点型和复数2)整型: 布尔类型:True和False 标准整数类型:0x:十六进制;无前缀:十进制;0:八进制;0b:二进制3)双精度浮点数:4)复数5)布尔数:是整型的子类,但是不能被继承而生成它的子类,对于值为0的任何数字或空集(list、tuple、dict)中值都是false,数学运算中,True=1,False=012.序列:列表、元组和字符串 12.1适用操作符: 成员关系操作符:in、not in 连接操作符:+ 重复操作符:*.se
15、quence* int 切片操作(利用子序列结合三种操作方式,可以非常灵活的控制序列): 1)索引取值 2)索引范围取值start,end 3)步长切片:step 12.2常用一些方法 List.Extend、list.insert 12.3类型转换: 12.4格式化输出字典:%(key)format %dict注意:要输出带有小数位的,一定要注意是print %1.4f %(1.0/3),里面的数一定要有一个是带有小数位的-可能和版本有关12.5传参 可变参数:*为位置可变,可以将序列参数转变成每个元素作为单独参数,*为关键字可变,可以将字典转换乘关键字参数13映射和集合类型 13.1字典
16、字典的键必须是可哈希的,判断又没有key用in或not in 13.2元组删除 13.3比较 标准类型操作符:等比较操作符可以使用,实际上还是调用了cmp方法,该方法中首先比较字典长度,比较键的大小,最后比较值得大小;查找用dict,成员关系用in,not in14.文件和输入输出 14.1文件:是连续的字节序列;14.2 文件的操作:file_object =open(filename,access=r,buffering=-1)权限:r,w,a表示读取,写入,追加,+代表可读可写;buffering表示缓冲区大小,0表示不缓冲,1表示只缓冲一行数据,其他大于1的值表示使用定值作为缓冲区大小
17、,不提供该参数或者给定负值代表使用系统默认的缓冲机制file()与open()类似,但是一般推荐用open,除非处理特定的文件,使用file()内建函数使用U模式打开时,换行符通常会被替换为newline(n)read(size=-1):读取字节到字符串中,最多读取给定数目个字节,不指定size参数,或者size为负数,文件会被读到末尾;readlines(size=-1):参数size类似read,指定其他值的size,读取size个字节close() 15.Python过程式编程: 15.1语句与语法 注释、续行(单一语句换行 or )、代码组(缩进相同为同一代码块)、模块(导入时要放在特定路径下)15.2标识符 第一个字符只能是字母或下划线,余下的字符可以是字母、数字、下划线,区分大小写;注:不能使用关键字,尽量避免内建模块中的关键字15.2基本风格注释、文档、缩进(4个字符)、标识符名称 15.3命名惯例 15.4主程序 注意:所有的模块都有能力执行代码;最高级别的语句(没有缩进的语句)在模块被导入的时候都会被执行,无论是否需要,因此妥当的做法是除了那些真正需要执行的代码,所有的功能代码都通过函数建立,所以仅在主程序模块中编写大量的顶级可执行代码,被导入的模块只应该存在较少的顶级执行代码