zoukankan      html  css  js  c++  java
  • 第三周 day3 python学习笔记

    1.字符串str类型,不支持修改。

    image

    2.关于集合的学习:

    (1)将列表转成集合set:集合(set)是无序的,集合中不会出现重复元素--互不相同

    imageimage

    (2)集合的操作:交集,并集、差集、对称差集、父集、子集、增加、删除、求长度,但是不允许修改

    image

    imageimage

    3.文件操作

    (1)对文件操作的流程:

               》》1.打开文件,得到文件句柄并赋值给一个变量

               》》2.通过句柄对文件进行操作

               》》3.关闭文件         

    #文件操作
    f=open("B:/Python/PycharmCode/pyDay2/test.txt","r+")#打开文件
    print("打印第一行".center(50,"*"))
    print(f.readline())#读一行
    print("剩下的内容:")
    print(f.read())
    f.close()#关闭文件
    #如果提示编码问题,可以在打开文件的时候指定编码格式,
    encoding=“utf-8”

    (2)打开文件的模式:

       r: 只读模式,             r+:读写模式

      w:只写模式                w+:写读模式

      a+:追加读写    

      rb:针对二进制文件读,例如视频、音频文件

      wb:针对二进制文件写入

    (3)文件的常用操作:

    f.seek(0,0)#将内存中的文件指针移到文件开头
    print("打印前五行")
    for i in range(5):
    print(f.readline())
    f.seek(0,0)
    print(f.read(10))#文件指针在当前位置开始往后读取第十个字符
    #打印所有内容
    # for line in f.readlines():
    # print(line.strip())#忽略空格

    #high bige
    读一行,取一行,这种效率更高,占用内存空间小(推荐这种方式)

    for line in f:
    print(line)
    #用这种方式 不打印第十行,其余都打印
    f.seek(0,0)
    i=0
    for line in f:
    if i==9:
    print("------------+++++++")
    i+=1
    continue
    print(line)
    i+=1


    print("不打印第十行,其余的都打印出来")
    #low 全部读取大内存中,然后在输出,浪费内存空间(不好)
    for index,line in enumerate(f.readlines()):
    if index==9:
    print("------------------")
    continue
    print(line.strip())

    print(f.tell())#显示当前指针所在地方


    print(f.encoding)#读取文件编码
    print(f.name)#输出文件名字
    
    
    print("...............................")
    f.seek(0)
    f.truncate(10)#文件截断
    print(f.read())

    f.close()#关闭文件

    4.模拟打印进度条信息

    #打印进度条信息
    import sys,time
    for j in range(100):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.2)#延迟0.2秒

    5.python中的文件编码问题

    python2中默认编码为ASCII,python3.x中默认编码为Unicode

    image
    decode解码时参数为原来的编码类型,encode编码时参数为新的编码类型
    编码的转换时:都要使用Unicode作为中介,utf-8---->unicode--->GBK;;gbk--->unicode--->utf-8
    在字符串前面加上u,表明它是Unicode编码:eg.  
    s=u”你好”  
    print(s) 
    ---------------------------------------------------------------------------------------------------------------
    import sys
    print(sys.getdefaultencoding())#打印默认编码格式
    
    s="你好,我是Wujian" #python3中默认编码为Unicode
    print(s)
    
    s1=s.encode("utf-8")#字符串str类型通过encode编码成了字节包bytes,编码成了utf8
    print("utf-8:",s1)
    s2=s1.decode("utf-8").encode("utf-8")
    print(s2)
    print("gbk:",s1.decode("utf-8").encode("gbk"))
    print(s1.decode())
    image

    6.文件内容的修改

    f=open("test.txt","r",encoding="utf-8")
    f2=open("test2.txt","w",encoding="utf-8")
    # print(f.read())
    for line in f:
        if "让我掉下眼泪的" in line:
            line=line.replace("让我掉下眼泪的","让我们彼此掉下眼泪的")
            f2.write(line)
        else:
            f2.write(line)
    f.close()
    f2.close()

    7.with语句的使用:自动关闭文件

    #with 语句,会自动进行文件的关闭
    with open("test2.txt","r",encoding="utf-8") as f:
        for line in f:
            print(line)

    *Dog face小提示:打开多个文件时,python官方推荐的编程规范是每行不超过80个字符,多的换行使用“”

    #一行写不下,可以换多行
    with open("test.txt","r",encoding="utf-8") as f,
        open("test2.txt","r",encoding="utf-8") as f2:
            for line in f:
                for line2 in f2:
                    if line2==line:
                        print(line)
                f2.seek(0)

    8.三种编程范式:面向过程编程,面向对象编程,函数式编程

    简单的理解:在python中过程与函数的区别:过程是没有return返回值的函数,

    #面向过程、面向对象、函数式编程
    def func1():
        "关于函数的使用说明:func1为一个过程"
        print("hello ,in the func1")
    
    func1()
    
    def func2():
        "func2:为一个函数"
        print("in the func2")
        return 100
    
    print(func2())
    Open-mouthed smile#每次打印日志时加上当前时间
    import time
    def log():
        # "log:为一个打印日志的函数。"
        time_format="%Y-%m-%d %X"#定义时间的样式 
        #%Y 四位数的年份表示(000-9999)%m 月份(01-12) %d 月内中的一天(0-31)%X 本地相应的时间表示
        time_current=time.strftime(time_format)
    
        with open("test3.txt","a+",encoding="utf-8") as f:
            f.write("%s I'm writing the log now 
    "%time_current)
    def func3():
         log()
    func3()
    time.sleep(2)
    def func4():
        log()
    func4()

    Dog face小提示:python中return可以返回多个值:且不同类型的值

    image

    总结:返回值数为0:None

    返回值数为1:object

    返回值数为多个:tuple元组类型

    返回值为一个函数:如果打印出来则为该函数的地址

    9.python中的参数详解:

    #关于python中的参数
    #参数:形参、实参;默认参数、位置参数、关键字参数、字典参数
    def func1(x,y,z=99):#z为默认参数:默认参数非必须传递
        print(x)
        print(y)
        print(z)
    
    func1(5,12)#默认位置参数:与形参的位置一一对应
    func1(x=3,y=4)#关键字参数:与形参顺序无关
    func1(y=10,x=20)
    func1(8,y=9)#原则:关键字参数不能放在位置参数之前
    
    func1(0,z=25,y=9)
    
    def func2(*args):#设置一个参数组,可以传递多个参数;将N个关键字参数转成元组的方式
        print(args)
    
    func2(1,2,5,8,40,"hello",["momoda","memn"])#默认以元组的方式传递
    func2(*[1,2,3,4,5]) #args=tuple([1,2,3,4,5])
    
    def func3(**kwargs):#字典参数:将N个关键字参数转成字典的方式
        print(kwargs)
    
    func3(name="jean",age=22,sex="M")
    func3(**{"name":"jean","age":22,"sex":"M"})
    
    #同样也可以取出字典参数中的值
    def func4(**kwargs):
        print(kwargs["name"])
        print(kwargs["age"])
        print(kwargs["sex"])
        print(kwargs)
    
    func4(name="Jean Steve",age=25,sex="Man")
    image
    10.局部变量与全局变量
    #局部变量与全局变量的说明
    #全局变量作用域整个程序,局部变量作用于某函数内
    #当局部变量与全局变量同名时,在定义局部变量的子程序内:局部变量起作用;其余地方:全部变量起作用
    name="Jean Steve"#全局变量
    school="SMU"
    def change_name(name):
        print("before name:%s"%name)
        name="Huadd"#这个函数就是局部变量的作用域
        print("after changed name:%s"%name)
        #在局部修改全局变量 需要申明global
        #!!!但是非常不建议这么做,因为函数经常被其他函数多次调用,容易把程序员自己也搞混,容易出错
        global school
        school="UESTC"
    
    change_name(name)
    print(name)
    print(school)
    
    names=["Jean","Rawal","Rosey"]
    def change():
        names[1]="Rwwww"#针对列表这种类型的全局变量,在局部函数中不用申明global也可以直接修改
    
    change()
    print(names)
    image
    11.python中关于函数的递归
    # 递归的特点:
    # 1.明确的结束条件
    # 2.问题的规模每递归一次都应该比上一次的问题规模有所减少
    # 3.效率低
    #python中关于函数的递归
    def func(n):
        while n>=0:
            print(n)
            return func(n-1)
    
    func(5)
    
    def calculate(n):
        "计算一个数的阶乘"
        while n>1:
            return n*calculate(n-1)
        else:
            return 1
    
    res=calculate(6)
    print("阶乘的结果为:",res)

    image

    12.高阶函数:与数学中的复合函数类似,函数的互相嵌套
    #高阶函数
    def func(a,b,f):
        res=f(a)+f(b)
        print(res)
    
    #求两个数的绝对值之和
    func(-5,4,abs)#abs绝对值函数
     
    13.作业
    
    
    
    
    
    
    
    

     

     

  • 相关阅读:
    Hackerspace
    删除指定的多个文件
    windows 复制 文本文件内容 到剪切板
    Two-Factor Authentication 2FA
    Carriage-Return Line-Feed
    外观模式(Facade) Adapter及Proxy 设计模式之间的关系 flume 云服务商多个sdk的操作 face

    A good example is a User-Agent switcher which changes User-Agent on every request:
    Colly provides a clean interface to write any kind of crawler/scraper/spider
    java的(PO,VO,TO,BO,DAO,POJO)解释
  • 原文地址:https://www.cnblogs.com/jean925/p/7588225.html
Copyright © 2011-2022 走看看