计算器:
numx = "3 * 5 /-2 -(8*3/(20+3/2-5) + 4 /(3-2) * -3 ) "
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 即: {'k1': 大于66 , 'k2': 小于66} v1 = [11,22,33,44,55,66,77,88,99,90] dicNum = {"k1":[],"k2":[]} for i in v1: if int(i) > 66: dicNum["k1"].append(i) else: dicNum["k2"].append(i) print dicNum["k1"] print dicNum["k2"] print dicNum
v2 = [11,22,33,44,55,66,77,88,99,90] dicNum = {} for i in v2: if int(i) > 66: if "k1" in dicNum: dicNum["k1"].append(i) else: dicNum["k1"] = [i] else: if "k2" in dicNum: dicNum["k2"].append(i) else: dicNum["k2"] = [i] print dicNum["k1"] print dicNum["k2"]
collection
-
默认字典(设置字典的默认格式) defaultdic
-
有序字典 orderdic
-
计数器 counter
-
队列 - 双向队列
# 默认字典 myDict = collections.defaultdict(list) myDict["k1"].append(1) print myDict["k1"]
# 有序字典 orderdict
有序字典是在字典里面维护了一个列表
#计数器counter list1 = [11,22,33,44,5544,3322,111] tuple1 = (11,22,33,44,222,5555,2222) str1 = "2343252632642362hfidsafhsifoesagoewagewaglsanldsa;lsf;sahflaf;saf;la" c2 = collections.Counter(str1) print c2
Queue
- 队列-单向队列 FIFO 弹夹
import Queue q = Queue.Queue() q.put(2) q.put(3) q.put(23) print q.get()
生成器
练习:<br>有如下列表: [13, 22, 6, 99, 11] 请按照一下规则计算: 13 和 22 比较,将大的值放在右侧,即:[13, 22, 6, 99, 11] 22 和 6 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11] 22 和 99 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11] 99 和 42 比较,将大的值放在右侧,即:[13, 6, 22, 11, 99,] 13 和 6 比较,将大的值放在右侧,即:[6, 13, 22, 11, 99,] ...
li = [13, 22, 6, 99, 11] for m in range(len(li)-1): for n in range(m+1, len(li)): if li[m]> li[n]: temp = li[n] li[n] = li[m] li[m] = temp print li
函数
代码块,按功能划分,
函数式编程和面向过程编程的区别:
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
-
内置函数
- vars() == 当前模块的所有变量
__doc__ 注释本文件
__name__ 本文件名,如是当前执行文件,内容是__main__
__file__ 文件路径
- all() 只要有空,返回False
- any() 只要有一个是真,返回True
- reload() 重新加载引用文件
-
自定义函数
-
def定义函数的关键字
-
函数名
-
函数声明
-
函数参数
形式参数,形参
实际参数,实参
动态参数
def func(*args): print args li = [11,22,33,444,332,112] func(*li)
- 接受多个参数
- 内部自动构造元组
- 调用时,加*避免自动构造元组
动态参数要调用字典的时候,需要用到**
def func(**args): print args dic = {"echo":123,"rep":234} func(**dic)
默认参数
不传使用默认值
-
函数返回值
def email(arg): print arg if __name__ == "__main__": cpu = 100 ram = 50 disk = 500 for i in range(1): if cpu > 90: alert = "cpu 出现问题" email(alert) if disk > 90: alert = "disk 出现问题" email(alert) if ram > 80: alert = "内存 出现问题" email(alert)
-
导入函数
文件操作
obj = open("index.txt","r") obj.seek(10) #定位指针
print obj.tell() #输出指针位置
print obj.read() #输出内容
print obj.tell()
#输出指针位置
r 读
w 写
a 追加
&+
r+ 读写
w+ 类w
a+ 类a
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,无意义
- a+,同a
"U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab