zoukankan      html  css  js  c++  java
  • python基础三

    集合、三元运算符、监控日志、函数和积累

    一、集合

    集合也是一种数据类型,特点:无序和不重复  

      set1={1,2,34,4,56,77,8}

      set2={2,4,5,78,9}

      1、交集:print(set1.intersection(set2)) 或 print(set1 & set2)

      2、并集:print(set1.union(set2)) 或 print(set1 | set2)

      3、差集:print(set1.difference(set2)) 或 print(set1 - set2)

      4、对称差集:print(set1.symmetric_difference(set2)) 或 print(set1 ^ set2)

      5、创建:set3=set()

         添加:set1.add(88) 或 set1.update([11,23,45])

         删除:set1.remove(34) #若元素不存在会报错

            set1.pop() #随机删除一个元素

            set1.discard(77) #若是元素不存在,不做处理

    二、三元运算符

    程序的简化写法

       L=[]   #第一种写法

      for i in range(1,11):

        if i%2==0:

          L.append(i)

      print(L)

      

      L=[]   #第二种写法

      L=[i for i in range(1,11) if i%2==0]

      print(L)

    三、监控日志

     import os

    os.system('ipconfig')  #用来执行系统命令(如:window下的ip查询)

    import os,time
    while True:
        ips=[] #存放所有的ip地址
        with open('access.log','a+') as fr:
            fr.seek(0)
            for line in fr:
                ip=line.split()[0]
                ips.append(ip)
            fr.seek(0)
            fr.truncate()
        ipset=set(ips) #存放的是去重之后的ip地址(set去重)
        for ip in ipset:
            if ips.count(ip)>200:
                print('攻击你的ip的是:%s'%ip)
                # os.system('iptables -I INPUT 1 -p tcp -s %s  -j DROP') # centos版本的linux下,封ip命令
        time.sleep(60)
    #注:日志文件有空格的话,会报错

    四、函数

      函数就是把一组代码合并到一起,实现某种功能,需要时可直接调用。

    参数可以有也可以没有;

    参数分为:必填参数;默认值参数;可变参数(接收的是元组);关键字参数(接收的是字典)。

    其中可变和关键字参数不是必填的,关键字参数有两种填写方式(1)**{'a':'hi'},(2)a='hi'

    注:如果四种参数类型联用的话,参数接受顺序为:必填-默认-可变-关键字参数,否则会报错。

    def function(name,age,country='china',*args,**kwargs):
        print(name)
        print(age)
        print(country)
        print(args)
        print(kwargs)
    dict={'fruits':'apple','id':9001}
    function('xiaoming','18','shanghai','python','java',**dict)
    function('xiaohong','18','shanghai','python','java',fruits='apple',id=9001)

    函数碰到return,立即结束这个函数;调用函数后,返回计算的结果;函数可以没有返回值,如果没有返回值得话,默认返回None;如果这个函数的处理结果还需要用到别的地方,则需要给函数返回值;如果函数return多个值的话,会放到一个元组里面。

    def add(a,b):
        return a+b,a+a
    
    res=add(60,90)
    print(res)

    判断小数

    def is_float(s):
        s=str(s)
        if s.count('.')==1:
            left=s.lstrip().split('.')[0]
            right=s.split('.')[1]
            if left.split().count('-')==1 and left.split()[0]=='-':  #判断负小数,判断左边第一个字符是'-',也可用left.startswith('-')
                if left[1:].lstrip().isdigit() and right.isdigit():
                    return True
                else:
                    return False
            elif left.isdigit() and right.isdigit(): #判断正小数
                return True
            else:
                return False
        else:
            return False
    
    print(is_float('1.2'))
    print(is_float(' 1 .2'))
    print(is_float('1. 2'))
    print(is_float(' - 1.2'))

    全局变量与局部变量

    如果想在函数里面修改全局变量的值,需要先用global关键字声明;要修改的全局变量是int、string类型,必须要声明;如果是list、dict的话,要修改则不能加global

    五、积累

    1、获取在用python命令运行python文件,传入的参数

      (1)test.py 写入如下语句

        import sys

        print(sys.argv)

      (2)在命令行中执行python test.py i love python

        输出为列表:['test.py','i','love','python']

    2、判断文件是否存在:import os

                if os.path.exists('test.py'): print('ok')

                else: print('error')

    3、字符串转化为字典:首先字符串为字典形式的,如,'{'name':'apple','id':2}'  

               eval('{'name':'apple','id':2}')  若为eval('')则会报错

  • 相关阅读:
    Day 7 测试用例设计(二)场景流程分析法、正交表法、状态迁移法、
    Day 6 测试用例设计(一)等价类、边界值、判定表、因果图
    Day 5 网络基础 & SVN的使用
    Day 4 shell脚本
    gitlab-runner (一)
    大数据(二)Elasticsearch 分布式搜索引擎(存索引、索引搜索)
    大数据(一)from 北鼻 消息中间件 + 数据计算+数据存储=数据管理
    关系型数据库、非关系型数据库
    SVN 版本管理工具 Gitlab 仓库管理系统 Git 代码管理工具
    Day 2 & 3 linux常用命令, vim
  • 原文地址:https://www.cnblogs.com/eeoo/p/6959664.html
Copyright © 2011-2022 走看看