Python笔记总结week3

时间:2022-09-20 19:15:26

Set集合: 无序,不重复的序列

a. 创建

se = {"123,"456" }
print(type(se))
#创建集合方式
s1 = se = {"123,"456" }
s2 = set()
s3 = set([1,2,1,2])

b.功能

set() 创建一个空集合

#e.g. list() 类后面加括号:可用于将tuple变list, 执行list_init_,内部会执行一个for循环,将tuple中每个元素单个添加进新的列表.类似地,列表也可以转换成集合:

li = [1,2,1,2]
s1 = set(li)
c.操作集合
增加
s = set()
s.add(123)
s.add(123)
s.add(123)
#无论增加多少,集合中只有一个123

删除

s.clear()
差集
s1 = {11,22,33}
s2 = {22,33,44}
s3 = s1.difference(s2) #s1中存在,s2中不存在
s3 = s2.difference(s1) #返回{44}

对称差集

s3 = s1.asymmetric_difference(s2)

移除某元素

s1 = {11,22,33}
s3 = s1.discard(111) #不存在该元素不报错
s3 = s1.remove(111) #不存在会报错
ret = s1.pop() #随机移除一个元素,会返回值到ret pop不支持加参数
Intersection交集
s3 = s1.intersection(s2)   #不分前后,找交集
s1.intersection_update(s2) #直接返回给s1,更新s1

Union并集

s2 = s1.union(s2)

增加元素

s1 = {11,22,33}
s1.add(1)
li = [1,2,3,4,5]
s1.update(li) #增加元素可以for循环,可迭代的东西;
批量添加(列表,元组,字符串都可以)

函数function

1.def 关键字,创建函数
2.函数名
3.()
4.函数体:函数定义时,函数体不被执行的,只在调用的时候才执行
5.返回值

#函数中,一旦执行return,执行终止
def f1():
print(123)
return 22
print(111) #will not be executed #如果没有写返回值,返回结果为None

6.参数

形式参数:    def hhh(a)
实际参数 : 实际要代入函数的参数

参数种类:

1.普通参数
2.默认参数(必须放在参数列表最后)
3.指定参数

4.动态参数

*args默认将纯如的参数全部放置在元组中 f1(*[1,2,3,4])
**kwargs默认将纯如的参数全部放置在字典中 f1(**{"k1":"v1","k2":"v2"})

def sendmail(a,b):
print("Your email has been sent:",a,b)
return True
sendmail("alex","andy") #普通参数 def sendmail1(a,b,kk="thx"):
print("Your email has been sent:",a, b,kk)
return True
sendmail1("alex","andy") #默认参数 def sendmail2(a,b):
print("Your email has been sent:",a, b)
return True
sendmail2(a = "alex",b = "thanks") #指定参数

格式与动态参数

#格式化
str. format() #str format 格式化输出
s1 = "I am {0}, now {1} years old".format("Alex", 18)
s2 = "I am {0}, now {1} years old".format(*["Alex", 18])
print(s1,s2) #same reults
def f1(*args):
print(args)
return True
f1(1,23,4,5,6,7,8,9,0,8) #args把所有参数当作一个元素做for循环添加到一个元组
li = [1,23,4,5,6,7,8,9,0,8]
f1(li)
f1(*li) #万能参数
def f1(*args, **kwargs):
print(*args, **kwargs)
return True
dic = {"a":1,"b":2}
f1(li,dic) s1 = "I am {0}, now {1} years old".format("Alex", 18)
s2 = "I am {0}, now {1} years old".format(*["Alex", 18])
print(s1,s2) s1 = "I am {name}, now {age} years old".format(name = "Alex", age = 18)
dic = {'name':'Alex','age':18}
s2 = "I am {name}, now {age} years old".format(**dic)
print(s1,s2)

引用: 函数传参数的时候穿的是引用(不是值)

def f1(a1,a2):
return a1+a2
def f1(a1,a2):
return a1*a2
ret = f1(8,8)
print(ret)
#函数返回值为64,第二个函数覆盖了前一个 def f1(a1):
a1.append(999)
return a1
li = [1,2,3,4] #传参数的时候传的是个引用(不是值)
f1(li) #li变了
print(li)

全局变量,作用域:

没有写到函数中的变量叫全局变量,所有的位置和作用域里面都可读
局部变量,只能在函数自己,优先读函数自己的变量,没有的话全局找
最好不要有很多隐含的全局变量,不然很难追踪;全局变量需要先声明再用

NAME = "Alex"   #表示全局变量

def f1(name,age):
global NAME
name = "Mo" #表示NAME是全局变量,必须加global才能重新赋值
print(name,age)

def f2(name,age):
print(name,age) f1(NAME,9) #改变了全局变量,改为"Mo"
f2(NAME,10) #全局变量仍指向"Alex" #如果全局变量是列表或字典,只能修改,不可重新赋值
#全局变量全要大写
#注意函数之间空两行

登录、注册程序(函数应用)

def login(username,password):
''' For user login purpose
:param: username: 用户输入用户名
:param: password: 用户输入密码
:return: True: 登录成功; False: 登录失败
''' #param:username,password)
#True,login sucessfully
#False, login failed
f = open("db", "r")
for line in f:
line_list = line.split("|")
if line_list[0] == username and line_list[1] == password:
return True
return False def register(username,password):
''' For user register purpose
:param: username: 用户输入用户名
:param: password: 用户输入密码
:return: file to restore new user info
''' f = open("db","a")
temp = "\n" + username + "|" + password
f.write(temp)
f.close()
return f def main():
t = input("1: login; 2: register")
if t == "":
username = input("username:")
password = input("password:")
r = login(username,password)
if r == True:
print("Welcome login")
else:
print("login failed")
elif t == "":
username = input("username:")
password = input("password")
r2 = register(username,password) main()

关于Built-in functions

abs(-39)  #绝对值

# 0 "" [] {} () None are False
print(bool(0)) n = all([1,2,3,4]) #全部为真才为真
print(n)
any([0]) #只要有真则为真 print(bin(9)) #十转二进制, 0b
print(oct(9)) #十转八进制, 0o
print(hex(9)) #十进制转十六进制, 0x #汉字转字节(只要转换的字符串,按照什么编码)
n = bytes("李杰",encoding="utf-8") #utf-8一个汉字占3个字节 gbk:一个汉字占两个字节; 一个字节8位
print(n)
n = bytes("李杰",encoding="gbk")
print(n) #字节转换成字符串
new_str = str(bytes("李杰",encoding="utf-8"),encoding="utf-8")
print(new_str)

配置文件

#打开文件
f = open("db",'r') #只读
f = open("db",'w') #只写,先清空原文件
f = open("db",'x') #文件存在,报错;如果不存在,创建文件并写内容
f = open("db",'a') #追加 #分别加+ 可读可写,会覆盖之前的内容,一般都会用r+
f = open("db",'r+',encoding="utf-8")
#如果打开模式无b,按照字符读取
data = f.read()
f.tell() #tell 当前指针位置
f.seek(1) #指针调到第一个位置,永远按字节找
f.seek(f.tell()) #调整当前指针位置
f.write() #从当前指针位置开始覆盖 #操作文件
read()#无参数,读全部;有参数 data = f.read() #硬盘底层保存二进制,我们得到的是字符串,python自动转换底层二进制到字符串
print(data,type(data)) f = open("db",'r',encoding = "gbk") #如果打开发现乱码,很可能因为 encoding出问题, 尽量统一用utf-8 f = open("db",'rb') #取0101写0101
data = f.read()
print(data,type(data)) #写字符串,让python去做转换
f = open("db",'a')
f.write("李杰")
f.close() #直接写字节
f = open("db",'ab')
f.write(bytes("李杰",encoding="utf-8"))
f.close()

read() # 无参数,读全部;有参数,
# b,按字节
# 无b,按字符
# tell() 获取当前指针位置(字节)
# seek(1) 指针跳转到指定位置(字节)
# write() 写数据,b,字节;无b,字符
# close
# fileno
# flush 强刷
# readline 仅读取一行
# truncate 截断,指针为后的清空
# for循环文件对象 f = open(xxx)
# for line in f:
# print(line) #读一行写一行
with open('db1', 'r', encoding="utf-8") as f1, open("db2", 'w',encoding="utf-8") as f2:
times = 0
for line in f1:
times += 1
if times <=10:
f2.write(line)
else:
break

三目运算与lambda函数

###################三目
if 1 == 1:
name = "Alex"
else:
name = "SB" name = "Alex" if 1 == 1 else "SB" #######################Lambda
def f1(a1):
return a1 + 100 f2 = lambda a1: a1 + 100 #只能写一行:函数名称 lambda 参数: 函数体 ret1 = f1(10)
print(ret1) ret2 = f2(10)
print(ret2)
														
		

Python笔记总结week3的更多相关文章

  1. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  2. boost&period;python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  3. 20&period;Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  4. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  5. 13&period;python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  6. 8&period;python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  7. python笔记 - day8

    python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...

  8. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  9. python笔记 - day7

    python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...

随机推荐

  1. 让Git忽略所有obj和bin目录的同步

    DotNet的项目里,编译出来的二进制文件默认都是放在每个项目对应的bin和obj目录下,有时候开发人员会不小心把这些目录的文件错误的提交到Git服务器.Git里的忽略文件功能可以通过一个.gitig ...

  2. 旋转机械中Pitch Change的经验

    针对CFX (Compound File EXplorer)中rotor-stator interface 网格的处理,Pitch Change方法提供了四种交接算法(intersection alg ...

  3. 锋利的jQuery-1--end&lpar;&rpar;

    1.导航菜单:选中后显示当前标签下的子标签并且高亮,并且隐藏其他同级标签,(一行级联操作即完成),主要看end()函数用法. end(): 回到最近的一个"破坏性"操作之前.就是指 ...

  4. 使用git向github中添加项目并更新(备忘录)

    今天使用Git&github&ST3时,发现ST3不仅是git插件不能push成功,使用sublimegit插件也不行. 可能是没有掌握sublimegit的使用技巧,有待后续继续摸索 ...

  5. CodeForces 534B Covered Path &lpar;水题&rpar;

    题意:给定两个速度,一个一初速度,一个末速度,然后给定 t 秒时间,还每秒速度最多变化多少,让你求最长距离. 析:其实这个题很水的,看一遍就知道怎么做了,很明显就是先从末速度开始算起,然后倒着推. 代 ...

  6. bzoj 1009&colon;&lbrack;HNOI2008&rsqb;GT考试

    这道题机房n多人好久之前就A了…… 我到现在才做出来…… 一看就是DP+矩阵乘法,但是一开始递推式推错了…… 正确的递推式应该是二维的…… f[i][j] 表示第准考证到第 i 位匹配了 j 位的方案 ...

  7. Android中自定义View的MeasureSpec使用

    有时,Android系统控件无法满足我们的需求,因此有必要自定义View.具体方法参见官方开发文档:http://developer.android.com/guide/topics/ui/custo ...

  8. C&num; 语言规范&lowbar;版本5&period;0 &lpar;第2章 词法结构&rpar;

    1. 词法结构 1.1 程序 C# 程序 (program) 由一个或多个源文件 (source file) 组成,源文件的正式名称是编译单元 (compilation unit)(第 9.1 节). ...

  9. Java求循环节长度

    两个整数做除法,有时会产生循环小数,其循环部分称为:循环节.比如,11/13=6=>0.846153846153.....  其循环节为[846153] 共有6位.下面的方法,可以求出循环节的长 ...

  10. 枚举&plus;最短路 poj1062

    这里有个非常坑的地方,还有比酋长地位还更高的人,我也是看了论坛才知道... 在这里我把编号1看成终点,优惠价格看成相应的替代品编号到可替代品编号的权值,比如说有了2再加8000就到了1,那么2到1的弧 ...