http://www.cnblogs.com/wupeiqi/articles/4950799.html``
一、基本的学习方法
1,看视频,听懂老师的课程。
2,下课做笔记,将笔记的内容写入到博客中,用自己的方式来写。
3,会看本周笔记内容,写相关的作业提交老师修改。继续学习上一周的内容。
set数据类型:s ={11,22,33}
特点:元素无序且唯一。可以存放各种数据类型。
1,构建方法
| 1 2 3 4 5 6 | # 方法一:name ={12, 121, "alex", [1, 2, 3], {"name": "smith san"}, }# 方法二:name =set()li =[2, 23, 4]name =set(li) | 
2,操作
list_init_ 任何类的init的方法,都会执行内置的for循环,去初始化类。对于不同类型的数据可以做数据转换。
| 1 2 3 4 5 6 7 | li =[11,22,11,22]UserDict ={"usernamer":"alex","password":9999}s1 =set(li)s2 =set(UserDict)print(s1,s2){11, 22} {‘usernamer‘, ‘password‘} | 
set.add():添加一个元素进入集合,有就不添加,没有就添加
set.clear():清空集合。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | s =set()print(s)s.add(234)s.add(123)s.add(123)print(s)s.clear()print(s)---------set(){234, 123}set() | 
s1.difference(s2):求s1中存在,s2中不存在的元素。
s3 = s1.symmetric_difference(s2):求s1和s2并集-s1和s2的交集。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | s1 ={11,22,33}s2 ={22,33,44}s3 =s1.difference(s2)# s1中存在,s2中不存在print(s3)s3 =s2.difference(s1)s3 =s1.symmetric_difference(s2)print(s1)print(s2)print(s3)--------{11}{33, 11, 22}{33, 44, 22}{11, 44} | 
s1.difference_update(s2):用s1中有的s2中没有的元素更新s1
s1.symmetric_difference_update(s2):用s1中有的s2中没有的元素和s2中有的s1中没有的元素更新s1
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | s1 ={11,22,33}s2 ={22,33,44}s1.difference_update(s2)print(s1)print(s2)-----{11}{33, 44, 22}s1 ={11,22,33}s2 ={22,33,44}s1.symmetric_difference_update(s2)print(s1)print(s2)-----{11, 44}{33, 44, 22} | 
s1.discard(1111) #被移除元素不存在不报错 常用
s1.remove(11111) #被移除元素不存在报错
ret = s1.pop() #随机移除,ret接受移除的元素
| 1 2 3 4 5 6 | s1 ={11,22,33}s1.discard(1111)  #被移除元素不存在不报错 常用s1.remove(11111)  #被移除元素不存在报错ret =s1.pop() #随机移除,ret接受移除的元素print(s1)print(ret) | 
s3 = s1.union(s2):s1和s2的并集s3 = s1.intersection(s2):s1和s2 的交集s1.intersection_update(s2):s1的交集更新s1| 1 2 3 4 5 6 7 8 9 10 11 12 | s1 ={11,22,33}s2 ={22,33,44}s3 =s1.union(s2)print(s3)s3 =s1.intersection(s2)s1.intersection_update(s2)print(s3)print(s1)------{33, 22, 11, 44}{33, 22}{33, 22} | 
s1.update(li):可以更新一个可迭代的东西进去,比如下面的list,tuple,string等。
| 1 2 3 4 5 6 7 8 | s1 = {11,22,33}#li = [11,22,3,11,2]#li = (11,22,3,11,2)li = "alexalex"s1.update(li)print(s1)-----{33, 11, ‘l‘, 22, ‘e‘, ‘a‘, ‘x‘} | 
类的自己的方法,python内部个调用一下方法。
| 1 2 3 4 5 | # li = [11,22,33] # list __init__# li()            # list __call__# li[0]           # list __getitem__# li[0] = 123     # list __setitem__# def li[1]       # list __delitem__ | 
3,趣味题目。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | old_dict ={    "#1": 8,    "#2": 4,    "#4": 2,}new_dict ={    "#1": 4,    "#2": 4,    "#3": 2,}old_keys =old_dict.keys()old_set =set(old_keys)print(old_set)new_keys =new_dict.keys()new_set =set(new_keys)print(new_set)#应该删除的槽位remove_set =old_set.difference(new_set)#应该更新的槽位update_set =old_set.intersection(new_set)#应该增加的槽位add_set =new_set.difference(old_set)print(remove_set,add_set,update_set)--------{‘#2‘, ‘#1‘, ‘#4‘}{‘#2‘, ‘#1‘, ‘#3‘}{‘#4‘} {‘#3‘} {‘#2‘, ‘#1‘} | 
一,函数的定义主要有如下要点:
def:表示函数的关键字
函数名:函数的名称,日后根据函数名调用函数
函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
参数:为函数体提供数据
返回值:当函数执行完毕后,可以给调用者返回数据。
以上要点中,比较重要有参数和返回值:
一,返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者
| 1 2 3 4 5 6 7 8 9 10 | #返回值告诉调用者调用结果defsend(email,time):    mail_to =email    send =‘Bruce‘    iftime >=0:        return"发送成功"    else:        return"发送失败"send("306183118@qq.com",3) | 
二,参数
普通参数(严格按照顺序,将实际参数赋值给形式参数)
| 1 2 3 4 5 | defsend(email,time):    print(email,time)    returnemailret =send(email ="30@qq.com",time ="1101") | 
默认参数(必须放置在参数列表的最后,可以和其他参数同时使用)
指定参数(将实际参数赋值给制定的形式参数,顺序可变)
| 1 2 3 4 5 6 7 8 | deffunc(name, age =18):        print"%s:%s"%(name,age)# 指定参数func(‘wupeiqi‘, 19)# 使用默认参数func(‘alex‘) | 
动态参数
1,默认将传入的参数,全部放置在元组中, f1(*[1`1,22,33,44])
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | deffunc(*args):    printargs# 执行方式一func(11,33,4,4454,5)# 执行方式二li =[11,2,2,3,3,4,54]func(*li)动态参数一 | 
2,默认将传入的参数,全部放置在字典中   f1(**{"kl":"v1", "k2":"v2"})| 1 2 3 4 5 6 7 8 9 10 11 12 13 | deffunc(**kwargs):    printargs# 执行方式一func(name=‘wupeiqi‘,age=18)# 执行方式二li ={‘name‘:‘wupeiqi‘, age:18, ‘gender‘:‘male‘}func(**li)动态参数二 | 
3,万能参数, *args,**kwargs
| 1 2 3 4 | deffunc(*args, **kwargs):    printargs    printkwargs | 
4,字符串的格式化输出
普通的格式化
| 1 2 3 4 5 6 7 8 9 10 11 12 | # 字符串的格式化输出# str.format()# str format格式化输出# "%s %d"s1 ="i am {0}, age {1}".format("Bruce", 18)print(s1)s2 ="i am {0}, age {1}".format(*["Bruce", 18])print(s2)-----i am Bruce, age 18i am Bruce, age 18 | 
使用两个**处理字典的格式化调用
| 1 2 3 4 5 6 7 8 9 | s1 ="i am {name}, age {age}".format(name=‘Bruce‘, age=23)print(s1)dic ={‘name‘: ‘Bruce‘, "age": 12}s2 ="i am {name}, age {age}".format(**dic)print(s2)----i am Bruce, age 23i am Bruce, age 12 | 
函数化编程(注册登录)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #!/usr/bin/env python# -*- coding: utf-8 -*-# Author:Wuzhibindeflogin(username,password):    """    用于用户登陆    :param username: 用户名    :param password: 用户密码    :return: True 登陆成功:False 登陆失败    """    f =open(‘db‘,‘r‘)    forline inf:        line_list =line.strip().split("|")        ifline_list[0] ==username andline_list[1] ==password:            returnTrue        else:            returnFalse     returnFalse defregister(username,password):     """    用户注册    :param username: 用户名    :param password: 密码    :return: 默认返回none    """    f =open(‘db‘,‘a‘)    temp =‘\n‘+username+‘|‘+password    f.write(temp)    f.close() defmain():    t =input("1 = login other = register :")    ift =="1":        user =input("Please input username:")        pwd =input("Please input password:")        r =login(user,pwd)        ifr:            print("Welcome to login!")        else:            print("Failed to login!")    else:        user =input("Please input username:")        pwd =input("Please input password:")        r=register(user,pwd)        print("Registered successfully") main()-----admin|123alex|123wuzb|999alex|9999 | 
三元运算
执行逻辑:如果条件1成立,执行a;要不然执行b。
lambda表达式:lambda a,b:a*b
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | if1==1:    name ="alex"else:    name ="SB"# 如果 1==1 成立,# name = "alex"# 否则# name = "SB"name ="alex"if1==2else"SB"print(name)  deff1(a1):    returna1 +100 # lambda a1:a1+100 f2 =lambdaa1, a2=9: a1 +a2 +100 ret =f1(10)print(ret) r2 =f2(9)print(r2)-----SB110118 | 
普通打开方式
操作文件时,一般需要经历如下步骤:
打开文件
操作文件
一、打开文件
| 1 | 文件句柄 =file(‘文件路径‘, ‘模式‘) | 
注:python中打开文件有两种方式,即:open(...) 和 file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open。
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
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
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # utf-8一个汉字:三个字节# gbk 一个汉字:二个字节# utf-8s = "李杰"# 一个字节8位,一个汉字三个字节#  010101010101010101010101010101010101010101010101#     23232323232315#     2f     2a      2c           2c     2e      2f  f# 字符串转换字节类型# bytes(只要转换的字符串, 按照什么编码)n = bytes("李杰", encoding="utf-8")print(n)n = bytes("李杰", encoding="gbk")print(n)# 字节转化成字符串new_str = str(bytes("李杰", encoding="utf-8"), encoding="utf-8")""" | 
使用with打开文件
好处:为了避免打开文件后忘记关闭,可以通过管理上下文,如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
| 1 2 3 | with open(‘db‘,‘r‘,encoding=‘utf-8‘) as f:    forline inf:        print(line) | 
文件的一些方法
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | f =open("db", ‘ab‘)f.write(bytes("李杰", encoding="utf-8"))f.close()f =open("db", ‘r+‘, encoding="utf-8")# f.fileno()# 如果打开模式无 b,则read,按照字符读取data =f.read(1)# tell当前指针所在的位置(字节)print(f.tell())# 调整当前指着你的位置(字节)f.seek(f.tell())# 当前指针位置开始向覆盖f.write("888")f.close()2、操作文件read() # 无参数,读全部;有参数,                                   b,按字节                                   无b,按字符tell() 获取当前指针位置(字节)seek(1) 指针跳转到指定位置(字节)write() 写数据,b,字节;无b,字符closefilenoflush 强刷readline 仅读取一行truncate 截断,指针为后的清空 | 
原文:http://www.cnblogs.com/kakarott/p/6059429.html