一、set集合

1、Set集合特点:无序、不重复,可嵌套

2、set集合创建规则:set = {"123","234"}

字典创建规则:dic = {“Key”:"345"}

列表创建规则:li = []

元组:ages  = (12,33,22,45,67) 或 ages = tuple((21,32,43,54,74))

元组转换为列表:list((22,3,4,5,))

创建集合方式:

1)直接在集合中添加元素:

S1 = {11,33}

2) 创建空集合:

S2 = set()     ---->空集合在内存空间调用—_init_方法

3)将列表转换至集合:

S3 = set([22,33,4,44,55,])    --->将列表加入新集合,新的集合则循环列表中的元素,如列表中有相同的元素,则只显示一个

3、操作集合

1)添加元素:add   单个元素添加

2)清楚集合中所有元素:clear



set = {22,33,4,4,66}

set.add(99) #添加元素99至集合

print(set)

set.clear()#清楚集合中元素

print(set)

View Code

3)difference用法



S1 = {22,33,44,55.}

S2= {33,44,55,66}

S3= S1.difference(S2) #把S1中存在值,S2中不存在值赋值给S3

print(S3)

View Code

4)symmetric_difference用法



S1 = {22,33,44,55.}

S2= {33,44,55,66}#S3 = S1.difference(S2) #把S1中存在值,S2中不存在值赋值给S3#print(S3)

S4 = S1.symmetric_difference(S2) #对称差值赋值给S4,对称差值即指的是吧S1和S2中不同的值取出来赋值S4

print(S4)

View Code

5)difference_update用法



S1 = {22,33,44,55.}

S2= {33,44,55,66}#S3 = S1.difference(S2) #把S1中存在值,S2中不存在值赋值给S3#print(S3)#S4 = S1.symmetric_difference(S2) #对称差值赋值给S4,对称差值即指的是吧S1和S2中不同的值取出来赋值S4#print(S4)

S1.difference_update(S2) #把S2中与S1中不同的值,更新至新的S1中,S1中做所有元素值则发生变化,S1

print(S1)

View Code

6)symmetric_difference_update用法



1 S1 = {22,33,44,55.}2 S2 = {33,44,55,66}3 #S3 = S1.difference(S2) #把S1中存在值,S2中不存在值赋值给S3

4 #print(S3)

5 #S4 = S1.symmetric_difference(S2) #对称差值赋值给S4,对称差值即指的是吧S1和S2中不同的值取出来赋值S4

6 #print(S4)

7 #S1.difference_update(S2) #把S2中与S1中不同的值,更新至新的S1中,S1中做所有元素值则发生变化,S1

8 #print(S1)

9 S1.symmetric_difference_update(S2) #把S1中与S2中不同的值,打印出来,

10 print(S1)

View Code

7)discard:移除指定元素,不存在不报错



S1 = {22,33,44,55,}

S1.discard(33) #移除S1集合中的33元素

print(S1)

S1.discard(11111)print(S1)

View Code

8)remove:移除指定元素,不存在则报错

9)pop:随机移除集合中的元素



1 S1 = {22,33,44,55,}2 ret = S1.pop() #把随机移除的元素取出并赋值给ret

3 print(S1)4 print(ret)

View Code

10)intersection:取出两个集合交集



1 S1 = {22,33,44,55,}2 S2 = {33,44,55,66}3 S3 = S1.intersection(S2) #取出S1和S2交集并赋值给S3

4 print(S3)

View Code

11)intersection_update:去两个集合交集并赋值给新的集合

View Code

12)union:集合并集



1 S1 = {22,33,44,55,}2 S2 = {33,44,55,66}3 S1.union(S2) #取出S1和S2中的并集

4 print(S1)

View Code

13)update:把列表中多个元素同时添加至集合中



1 S1 = {22,33,44,55,}2 li = [66,77,88,99] #列表

3 S1.update(li) #将列表中的元素全部加入值集合中

4 print(S1)

View Code



1 S1 = {22,33,44,55,}2 #li = [66,77,88,99] #列表

3 #S1.update(li) #将列表中的元素全部加入值集合中

4 #hh = ("hh","jj","kk",) #将元组中各个元素同时加入至集合中

5 #S1.update(hh)

6 li = "hjkdss"

7 S1.update(li)8 print(S1)

View Code

二、函数

1)函数编写规范:

def:表示创建函数的关键字

函数名:即指自己定义的函数名,后续则根据函数名调用函数

函数体:指函数中一系列的逻辑计算代码

(参数):为函数体提供数据

返回值:当函数执行完后,可以根据调用者返回数据



1 defsendmail():2 try: #try捕捉异常开始

3 importsmtplib4 from email.mime.text importMIMEText5 from email.utils importformataddr6

7 msg = MIMEText('邮件内容', 'plain', 'utf-8')8 msg['From'] = formataddr(["武沛齐", 'wptawy@126.com'])9 msg['To'] = formataddr(["走人", '2521235017@qq.com'])10 msg['Subject'] = "主题"

11 server = smtplib.SMTP("smtp.126.com", 25)12 server.login("wptawy@126.com", "WW.3945.59")13 server.sendmail('wptawy@126.com', ['2521235017@qq.com', ], msg.as_string())14 server.quit()15 except:16 #发送失败返回False

17 return False #在函数只一旦执行return,则终止整个程序的执行过程

18 else:19 #发送成功返回True

20 return True #将发送成功的返回值赋值给sendmail

21 ret =sendmail()22 print(ret)23 if ret == True: #如果返回值为True,表示邮件发送成功

24 print("发送成功") ;25 else: #返回值为False,表示邮件发送失败

26 print("发送失败") ;27 #sendmail() #执行邮箱函数

View Code

2)函数参会化

A:普通参数:即指实参与形参一一对应

B:默认参数:即指在形式参数中设置默认的值即可,【必须放在参数列表的最后面】

C:动态参数



1 def sendmail(qq): #qq为传递的动态参数

2 try:3 importsmtplib4 from email.mime.text importMIMEText5 from email.utils importformataddr6

7 msg = MIMEText('邮件内容', 'plain', 'utf-8')8 msg['From'] = formataddr(["武沛齐", 'wptawy@126.com'])9 msg['To'] = formataddr(["走人", '2521235017@qq.com'])10 msg['Subject'] = "主题"

11 server = smtplib.SMTP("smtp.126.com", 25)12 server.login("wptawy@126.com", "WW.3945.59")13 server.sendmail('wptawy@126.com', ['qq', ], msg.as_string())14 server.quit()15 except:16 return ("BB"); #发送成功返回值为BB

17 else: #发送失败返回值为AA

18 return ("AA")19 whileTrue:20 mm = input("请输入邮箱地址:") #把输入动态参数赋值给mm

21 result = sendmail(mm) #输入动态参数结果值赋值给result

22 if result == "CB": #如果输入动态参数值与返回成功值相等,则邮件发送成功,否则发送失败

23 print("发送成功")24 else:25 print("发送失败")26 #sendmail()

View Code



1 def lcj(name,age = 19):2 print %(name,age)3 lcj("xiaoluo",21) #指定传递实参

View Code



1 deflcj(lit):2 print(lit)3 lit = [24,5,6,7,7,8,'ew','h',3,] #把列表中每一个元素传递给形参

4 lcj(lit) #将lit实参作为传递参数给形参

View Code

* :默认将传入的参数,全部放值在元组中,处理按照顺序传递的值给形参



1 def hh(*lcj): #形参前加一个*,表示可以讲一个列表中所有元素最为一个元祖传递给形参

2 print(lcj,type("lcj"))3 hh(22,3,4,5,6,"ew","er",43,)4 li=[77,99,00,"hh","kk",99] #列表

5 hh(li)

View Code



1 def hh(*lcj):2 print(lcj,type("lcj"))3 li=[77,99,00,"hh","kk",99] #列表

4 hh(*li) #将列表中的每一个元素转换至元祖中的每一个元素里面

View Code

** :动态加两个*  传的是字典【key,value】,程序会把dic中的元素赋值给形参



1 def F1(**agrs):2 print(agrs,type(agrs))#type打印出agrs数字类型为字典

3 F1(n1="lcj",n2="xiaoluo") #n1和n2为字典中key值,lcj和小罗为字典中传递的value

View Code

万能参数:*args,**args[一个*的必须放在前面]



1 def F1(*args,**args2): #一个*的必须放在前面

2 print(args,type(args))#type打印出args,args2数字类型

3 print(args2,type(args2))4 F1(22,33,4,K1="ww",K2="ee")

View Code

同时传递多个实参:默认情况多个实参与多个形参是一一对应



1 def sendmail(qq,context,context02): #qq为传递的动态参数=形参,context为传递的内容

2 try:3 importsmtplib4 from email.mime.text importMIMEText5 from email.utils importformataddr6

7 msg = MIMEText('context','context02', 'plain', 'utf-8')8 msg['From'] = formataddr(["武沛齐", 'wptawy@126.com'])9 msg['To'] = formataddr(["走人", '2521235017@qq.com'])10 msg['Subject'] = "主题"

11 server = smtplib.SMTP("smtp.126.com", 25)12 server.login("wptawy@126.com", "WW.3945.59")13 server.sendmail('wptawy@126.com', ['qq', ], msg.as_string())14 server.quit()15 except:16 return ("BB"); #发送成功返回值为BB

17 else: #发送失败返回值为AA

18 return ("AA")19 whileTrue:20 mm = input("请输入邮箱地址:") #把输入动态参数赋值给mm

21 result = sendmail(mm,"SB","hh") #mm,"SB","hh"传递参数即为实参

22 if result == "BB": #如果输入动态参数值与返回成功值相等,则邮件发送成功,否则发送失败

23 print("发送成功")24 else:25 print("发送失败")26 #sendmail()

View Code

D:指定参数



1 deflcj(name,job):2 print(name,job)3 #return True

4 lcj("hh","jj") #默认实参向形参一一传值

5 lcj( job ="IT", name ="xiaoluo") #执行形参

View Code

F:字符串格式化输出



1 S1 = "I am {0},age{1}".format("hh",12) #0和1为元素占位符,把hh和12分别传递给占位符0和1,常用的占位符%s %d %f

2 print(S1)3 S2 = "I am {name},age{age}".format(name="lcj",age=21) #指定占位符位置

4 print(S2)5 dic= {"name":"kk","age":23}6 S3 = "I am {name},age{age}".format(**dic) #添加两个**,表示把字典中的所有元素赋值给S3

7 print(S3)

View Code

G:Python传递值是引用



1 defkk(a2):2 a2.append(99) #append扩展,一般在元素末尾进行扩展

3 li = [22,33,44,55,]4 kk(li) #把列表的元素赋值给函数KK

5 print(li)

View Code

二、全局变量

1、函数作用域



1 def lcj(): #lcj为函数名

2 name="lcj" #函数作用域

3 print(name)4 lcj() #调用函数

View Code

2、全局变量:所有的作用域里面都可以调用全局变量,潜规则:所有定义的全局变量必须是大写

3、局部变量:在局部不变量中,优先使用自己定义的局部变量,如自己局部变量中没元素,可调用全局变量元素

4、在局部变量中引用全局变量,需用关键元素“global”



1 #全局变量,多有作用域都可读

2 #对全局变量进行重新赋值[增删改],需要用global

3 #特殊:列表、字典、可修改,不可重新赋值

4 #定义全局变量都是大写

5 name = "lcj" #全局变量

6 name = [22,3,4,5,]7 deff1():8 age = 12

9 name = "hh" #局部变量name

10 print(name,age)11 f1()12 deff2():13 age = 18

14 global name #对全局变量进行重新赋值

15 name = "123"

16 print(name,age)17 f2()

View Code

三、登入

1、登入

2、注册

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# lcj

def login(user, pwd):

"""

用户登入

:param user: 用户名

:param pwd: 密码

:return: true:表示登入成功,False:登入失败

"""

f = open("db", 'r')

for line in f: # 表示一行行读元素

list_line = line.split("|") # 用户名和密码用| 分开

if list_line[0] == user and list_line[1] == pwd: # 如果用户名和密码与文件中的用户名和密码项目则返回True

return True

return False # 用户名和密码不相等,返回False

def register(user, pwd):

"""

用户注册

:param user: 用户名

:param pwd: 密码

:return: 默认None

"""

f = open("db", 'a') # a:表示添加

temp = "\n" + user + "|" + pwd # \n:换行符

f.write(temp)

f.close() # 关闭文件

def main():

t = input("1:登入;2:注册")

if t == "1":

user = input("请输入用户名:")

pwd = input("请输入密码:")

r = login(user, pwd) # 吧输入的用户和密码传递给login,那么login需要接受用户名和密码两个参数

if r:

print("登入成功")

else:

print("登入失败")

elif t == "2":

user = input("请输入用户名:")

pwd = input("请输入密码:")

register(user, pwd) # 注册文件中用户名和密码

main() # 调用main函数,让用户选择登入或者注册

四,三元运算

三元运算又称三目运算,是对简单的条件语句的缩写

书写格式:

result = 值1 if 条件 else 值2

#如果条件成立,那么值1赋值给result值,否则,将“值2”赋值给result变量

View Code

五,lambda表达式

只能对简单的赋值进行操作



1 #简单函数表达式

2 #def f1(a1): #a1属于形参,

3 #return a1+100

4 #ret = f1(10) #10属于实参,把实参传递给形参a1,返回值f1为a1+100

5 #print(ret)

6 #lambda表达式运算如上函数

7 def f1(a1): #a1属于形参

8 return a1+100

9 f2 = lambda a1,a2: a1 + a2 + 100 #lamdba表达式,a1,a2

10 #ret = f1(10) #10实参,实参传递给形参a1,返回值f1为a1+100

11 #print(ret)

12 ret = f2(12,1) #给f2传递两个实参,

13 print(ret)14 #给a2定义一个默认值

15 def f1(a1): #a1属于形参

16 return a1+100

17 f2 = lambda a1,a2=9: a1 + a2 + 100 #lamdba表达式,给形参a2定义常量

18 ret = f1(10) #10实参,实参传递给形参a1,返回值f1为a1+100

19 print(ret)20 ret = f2(9) #给f2传递

21 print(ret)

View Code