复习(1~4)
第一天:

1 Python文件类型: 2 源代码 3 Python源代码文件以”py”为扩展名,由Python程序解释,不需要编译 4 字节代码 5 - Python源码文件经编译后生成的扩展名为”pyc”的文件 6 - 编译方法: 7 import py_compile 8 py_compile.compile(‘hello.py’) 9 优化代码 10 - 经过优化的源码文件,扩展名为”pyo” 11 - python –O –m py_compile hello.py 12 13 Python变量: 14 变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。 15 Python下变量是对一个数据的引用 16 17 变量的命名 18 - 变量名由字母、数字、下划线组成。 19 - 变量不能以数字开头 20 - 不可以使用关键字 21 - a a1 _a 22 变量的赋值 23 - 是变量的声明和定义的过程 24 a = 1 25 id(a) 26 Python运算符包括 27 - 赋值运算符 28 - 算术运算符 29 - 关系运算符 30 - 逻辑运算符 31 表达式是将不同的数据(包括变量、函数)用运算符号按一定规则连接起来的一种式子。 32 33 Python数据类型 34 数值 35 字符串 36 列表 37 元组 38 字典 39 40 数值类型 41 - 整型 42 - 长整型 43 - 浮点型 44 - 复数型 45 46 整型int 47 int可以存储2^32个数字,范围-2,147,483,648到2147483647 48 例如:0,100,-100 49 长整型long 50 Long的范围很大,几乎可以说任意大的整数均可以存储。 51 为了区分普通整型,需要在整数后加L或l。 52 例如: 2345L,0x34al 53 54 浮点型 55 •例如:0.0,12.0,-18.8,3e+7等 56 57 复数型complex 58 •Python对复数提供内嵌支持,这是其他大部分软件所没有的。 59 •复数例子:- 3.14j,8.32e-36j 60 •>>> num = 3.14j 61 •>>> type(num) 62 •<type 'complex'> 63 •>>> num 64 •3.1400000000000001j 65 •>>> print num 66 •3.14j 67 •>>> 68 69 字符串类型--string 70 •有三种方法定义字符串类型 71 72 str = ‘this is a string’ 73 str = “this is a string” 74 str = ‘’’this is a string’’’ 75 •三重引号(docstring)除了能定义字符串还可以用作注释。 76 字符串 77 •字符串索引 78 字符串是序列,可以通过索引取每个字符 79 80 str = ‘abcde’ 81 str[0] + str[1] 82 •字符串切片 83 84 str[1:3] 85 'bc' 86 str[:3] 87 'abc' 88 str[3:] 89 'de' 90 str[::1] 91 'abcde' 92 str[::2] 93 'ace‘ 94 str[-1] 95 'e' 96 str[-4:-1] 97 'bcd‘ 98 str[-2:-4:-1] 99 'dc' 100 101 序列 102 •字符串、列表和元组都是序列 103 •序列的两个主要特点是索引操作符和切片操作符 104 105 索引操作符让我们可以从序列中抓取一个特定项目 106 切片操作符让我们能够获取序列的一个切片,即一部分序列。 107 序列的基本操作 108 •1. len(): 求序列的长度 109 •2. +: 连接2个序列 110 •3. *: 重复序列元素 111 •4. in: 判断元素是否在序列中 112 •5. max(): 返回最大值 113 •6. min(): 返回最小值 114 •7. cmp(x, y):比较两个序列是否相等 115 116 元组() 117 •元组和列表十分相似 118 •元组和字符串一样是不可变的 119 120 元组可以存储一系列的值 121 元组通常用在用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。 122 •创建元组 123 •t= () 124 •t= (2,) 125 •t = (‘james’, ‘M’) 126 127 元组操作 128 129 元组和字符串一样属于序列类型,可以通过索引和切片操作 130 元组值不可变 131 •元组的拆分 132 t = (1,2,3) 133 a, b, c = t 134 列表[] 135 •列表(list)是处理一组有序项目的数据结构, 即可以在列表中存储一个序列的项目。 136 •列表是可变类型的数据 137 •创建列表 138 - list1 = [] 139 - list2 = list() 140 - list3 = [‘a’,1,2] 141 列表操作 142 - 取值 143 切片和索引 144 - 添加 145 list.append() 146 - 删除 147 del list[] 148 list.remove(list[]) 149 - 修改 150 list[] = x 151 - 查找 152 var in list 153 字典{} 154 •字典是python中的唯一的映射类型(哈希表) 155 •字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值。 156 •字典的方法: 157 158 keys() 159 values() 160 items() 161 162 #创建字典 163 dic = {} 164 dic = dict() 165 help(dict) 166 dict((['a',1],['b',2])) 167 dict(a=1, b=2) 168 fromkeys(), 169 #字典元素有相同的值,默认为None。 170 ddict = {}.fromkeys((‘x’,’y’), 100) 171 172 #访问字典 173 直接使用key访问:key不存在会报错,可以使用has_key()或者in和not in判断。 174 循环遍历: 175 例:for k in dic.keys(): 176 for k in dic: 177 for k, v in dic.items(): 178 更新 179 直接用键值访问更新 180 内建方法update() 181 •删除 182 del dic[‘a’] 183 dic.pop[‘a’] 184 dic.clear() 185 del dict
第二天:

1 # Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。 2 # 3 # Python 编程中 if 语句用于控制程序的执行,基本形式为: 4 # 5 # if 判断条件: 6 # 执行语句…… 7 # else: 8 # 执行语句…… 9 # 其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。 10 # 11 # else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句 12 a=1 13 if a>0: 14 print('a= %d' %a) 15 print('the end') 16 17 #if else条件判断 18 a=1 19 if a<0: 20 print('a是负数') 21 elif a>0: 22 print('a是正数') 23 else: 24 print('a=0') 25 26 #while循环 27 # Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: 28 # 29 # while 判断条件: 30 # 执行语句…… 31 # 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。 32 # 33 # 当判断条件假false时,循环结束。 34 b=10 35 while b>0: 36 print('b= %d' %b) 37 b-=1 38 print('the end') 39 40 #for循环 41 # Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 42 # 43 # 语法: 44 # 45 # for循环的语法格式如下: 46 # 47 # for iterating_var in sequence: 48 # statements(s) 49 print(range(1,51)) 50 for i in xrange(1,52): 51 print('i=%d' % i) 52 test=dict(a=1,b=2,c=3,d=4) 53 for i,j in enumerate(test): 54 print(i,j) 55 #enymerate函数中默认分离key和value,在for循环中通过i,j自动赋值key,value,将所有元素遍历出来 56 #如果是列表就自动遍历下标和列表元素。 57 58 for i in xrange(1,11): 59 if i==3: 60 print('aaaaa') 61 continue 62 print('i=%d' %i) 63 for i in xrange(1,11): 64 if i==3: 65 print('aaaaa') 66 break 67 print('i=%d' %i) 68 69 # 70 # 循环控制语句 71 # 循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句: 72 # 73 # 控制语句 描述 74 # break语句 在语句块执行过程中终止循环,并且跳出整个循环 75 # continue语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 76 # pass语句 pass是空语句,是为了保持程序结构的完整性。
第三天:

1 2.6 2 # 使用for循环遍历文件 3 4 fd = open('/tmp/hello.txt') 5 for line in fd: 6 print line, 7 8 # 2.7 9 # 使用while循环遍历文件 10 11 fd = open('/tmp/hello.txt') 12 while True: 13 line = fd.readline() 14 if not line: 15 break 16 print line, 17 fd.close() 18 19 # 2.8 20 # 统计系统剩余的内存 21 with open('/proc/meminfo') as fd: 22 # 查看内存的文件 /proc/meminfo 23 for line in fd: 24 if line.startswith('MemTotal'): 25 # line.startswith(‘a’) 匹配以a开头的行 26 total = line.split()[1] 27 # line.split()[1] 以空格为分隔符,形式列表,去第二段 28 continue 29 if line.startswith('MemFree'): 30 free = line.split()[1] 31 break 32 print "%.2f" % (int(free)/1024.0)+'M' 33 #"%.2f" 格式化字符串 34 print "%.2f" % (int(total)/1024.0)+'M' 35 c = float(free) / float(total)*100 36 print "%.2f" % c+'%' 37 print "%.2f" % (float(free)/float(total)*100)+'%' 38 39 # cat meminfo.py 40 # python meminfo.py 41 # free -m 42 43 # 2.9 44 # 数据类型转换计算(计算mac地址) 45 mac_addr = '00:16:31:02:D2:1C' 46 last_two = mac_addr[-2:] 47 plus_one = hex(int(last_two,16)+1)[2:] 48 if len(plus_one) == 1: 49 plus_one = '0'+plus_one 50 else: 51 pass 52 next_addr = mac_addr[:-2]+plus_one.upper() 53 print next_addr 54 # 55 # 3.0 56 # 数据类型转换(列表与字典相互转换) 57 # 58 # 对元组进行转换 59 fruits = ('apple', 'banana', 'orange') 60 61 # 元组转换为列表: 62 list(fruit) 63 64 # 元组不能直接转换为字典,附: 65 # 元组转换为字符串: 66 fruits.__str__() 67 # 68 # 对列表的转换 69 fruit_list = ['apple', 'banana', 'orange'] 70 71 # 列表转换为元组: 72 tuple(fruit_list) 73 74 # 列表不能直接转换为字典,附: 75 # 列表转换为字符串: 76 str(fruit_list) 77 # 78 # 对字典的转换 79 fruit_dict = {'apple': 1, 'banana': 2, 'orange': 3} 80 # 将字典的key转换为元组: 81 tuple(fruit_dict) 82 # 将字典的value转换为元组: 83 tuple(fruit_dict.value()) 84 85 # 将字典的key转换为列表: 86 list(fruit_dict) 87 # 将字典的value转换为列表: 88 list(fruit_dict.value()) 89 # 附: 90 # 将字典转换为字符串: 91 str(fruit_dict) 92 # 对字符串的转换 93 # 将字符串转换为元组: 94 str = "(1,2,3)" 95 tuple(eval(str)) 96 # 将字符串转换为列表: 97 str = "(1,2,3)" 98 list(eval(str)) 99 # 将字符串转换为字典: 100 str = "{'a':1 ,'b',2}" 101 eval(str)
第四天:

1 #复习 2 3 # 函数定义 4 # 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。 5 # 可以通过函数名在程序的不同地方多次执行(这通常叫函数调用)。 6 # 为什么使用函数 7 # 降低编程难度 8 # - 通常将一个复杂的大问题分解成一系列的小问题,然后将小问题划分成更小的问题,当问题细化为足够简单时,我们就可以分而治之。各个小问题解决了,大问题就迎刃而解了。 9 # 代码重用 10 # - 避免重复劳作,提供效率 11 12 # 函数的定义和调用 13 # - def 函数名([参数列表]): //定义 14 # - 函数名([参数列表]) //调用 15 16 # 函数的参数 17 # 形式参数和实际参数 18 # - 在定义函数时,函数名后面括号中的变量名称叫做“形式参数”,或者称为“形参” 19 # - 在调用函数时,函数名后面括号中的变量名称叫做“实际参数”,或者称为“实参” 20 # 缺省参数(默认参数) 21 # def fun(x, y=100): 22 # print x,y 23 # fun(1,2) 24 # fun(1) 25 26 # 函数的变量 27 # 局部变量和全局变量 28 # - Python中的任何变量都有特定的作用域 29 # - 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 30 # - 在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量 31 # 32 # global语句 33 # - global 变量名 34 # 强制声明为全局变量 35 # 36 # 函数返回值 37 # - 函数被调用后会返回一个指定的值 38 # - 函数调用后默认返回None 39 # - return 返回值 40 # - 返回值可以是任意类型 41 # - return执行后,函数终止 42 # - return与print区别 43 # 44 # 多类型传值和冗余参数 45 # 46 # 向函数传元组和字典 47 # 处理多余实参 48 def fun(x,y,*args,**kwargs) 49 50 51 # 递归调用 52 # 计算5的阶乘 53 def factorial(n): 54 if n == 0: 55 return 1 56 else: 57 return n * factorial(n-1) 58 59 print factorial(5)