2015-11-08第三天

11/24/2015来源:python人气:985

计算器:

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

  1. 默认字典(设置字典的默认格式) defaultdic

  2. 有序字典 orderdic

  3. 计数器 counter

  4. 队列 - 双向队列

# 默认字典
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

  1. 队列-单向队列 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)
  1. 接受多个参数
  2. 内部自动构造元组
  3. 调用时,加*避免自动构造元组

动态参数要调用字典的时候,需要用到**

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 \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

    • rU
    • r+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab