标签:author value 打开方式 视频 lambda表达式 大数 line 课程 square
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的交集更新s11 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 | #返回值告诉调用者调用结果def send(email,time): mail_to = email send = ‘Bruce‘ if time >=0: return "发送成功" else: return "发送失败"send("306183118@qq.com",3) |
二,参数
普通参数(严格按照顺序,将实际参数赋值给形式参数)
1 2 3 4 5 | def send(email,time): print(email,time) return emailret = send(email = "30@qq.com",time ="1101") |
默认参数(必须放置在参数列表的最后,可以和其他参数同时使用)
指定参数(将实际参数赋值给制定的形式参数,顺序可变)
1 2 3 4 5 6 7 8 | def func(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 | def func(*args): print args# 执行方式一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 | def func(**kwargs): print args# 执行方式一func(name=‘wupeiqi‘,age=18)# 执行方式二li = {‘name‘:‘wupeiqi‘, age:18, ‘gender‘:‘male‘}func(**li)动态参数二 |
3,万能参数, *args,**kwargs
1 2 3 4 | def func(*args, **kwargs): print args print kwargs |
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:Wuzhibindef login(username,password): """ 用于用户登陆 :param username: 用户名 :param password: 用户密码 :return: True 登陆成功:False 登陆失败 """ f = open(‘db‘,‘r‘) for line in f: line_list = line.strip().split("|") if line_list[0] == username and line_list[1] == password: return True else: return False return False def register(username,password): """ 用户注册 :param username: 用户名 :param password: 密码 :return: 默认返回none """ f = open(‘db‘,‘a‘) temp = ‘\n‘+username+‘|‘+password f.write(temp) f.close() def main(): t = input("1 = login other = register :") if t =="1": user = input("Please input username:") pwd = input("Please input password:") r = login(user,pwd) if r: 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 | if 1 == 1: name = "alex"else: name = "SB"# 如果 1==1 成立,# name = "alex"# 否则# name = "SB"name = "alex" if 1 == 2 else "SB"print(name) def f1(a1): return a1 + 100 # lambda a1:a1+100 f2 = lambda a1, 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位,一个汉字三个字节# 0101010 10101010 101010101 0101010 10101010 101010101# 23 23 23 23 23 23 15# 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: for line in f: 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 截断,指针为后的清空 |
标签:author value 打开方式 视频 lambda表达式 大数 line 课程 square
原文地址:http://www.cnblogs.com/kakarott/p/6059429.html