• python_Day3[set集合,函数,全局变量之篇]


    一、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 def sendmail():
     2     try:         #try捕捉异常开始
     3         import smtplib
     4         from email.mime.text import MIMEText
     5         from email.utils import formataddr
     6 
     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         import smtplib
     4         from email.mime.text import MIMEText
     5         from email.utils import formataddr
     6 
     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 while True:
    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 def lcj(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         import smtplib
     4         from email.mime.text import MIMEText
     5         from email.utils import formataddr
     6 
     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 while True:
    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 def lcj(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 def kk(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 def f1():
     8     age = 12
     9     name = "hh"    #局部变量name
    10     print(name,age)
    11 f1()
    12 def f2():
    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 = "
    " + user + "|" + pwd  # 
    :换行符
        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

      

  • 相关阅读:
    Win10安装组策略功能
    IIS 站点批量迁移
    MongoDB 异常记录
    微信Web开发者工具
    NHibernate 异常
    Git 常用命令
    IIS 反向代理
    CSS应用
    Oracle
    Android之ActionBar学习
  • 原文地址:https://www.cnblogs.com/lcj0703/p/5517170.html
Copyright © 2020-2023  润新知