博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三周 day3 python学习笔记
阅读量:2488 次
发布时间:2019-05-11

本文共 5155 字,大约阅读时间需要 17 分钟。

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

2.关于集合的学习:

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

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

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

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

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 100print(func2())
#每次打印日志时加上当前时间import timedef 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 \n"%time_current)def func3():     log()func3()time.sleep(2)def func4():    log()func4()

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

总结:返回值数为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")
 
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)
 
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 1res=calculate(6)print("阶乘的结果为:",res)

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

转载地址:http://nslrb.baihongyu.com/

你可能感兴趣的文章
Docker面试题(二)
查看>>
一、redis面试题及答案
查看>>
消息队列2
查看>>
C++ 线程同步之临界区CRITICAL_SECTION
查看>>
测试—自定义消息处理
查看>>
MFC中关于虚函数的一些问题
查看>>
根据图层名获取图层和图层序号
查看>>
规范性附录 属性值代码
查看>>
提取面狭长角
查看>>
Arcsde表空间自动增长
查看>>
Arcsde报ora-29861: 域索引标记为loading/failed/unusable错误
查看>>
记一次断电恢复ORA-01033错误
查看>>
C#修改JPG图片EXIF信息中的GPS信息
查看>>
从零开始的Docker ELK+Filebeat 6.4.0日志管理
查看>>
Sequelize的原始查询的时区问题
查看>>
How it works(1) winston3源码阅读(A)
查看>>
How it works(2) autocannon源码阅读(A)
查看>>
How it works(3) Tilestrata源码阅读(A)
查看>>
How it works(12) Tileserver-GL源码阅读(A) 服务的初始化
查看>>
uni-app 全局变量的几种实现方式
查看>>