第三周 day3 python学习笔记
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 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())
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)
*小提示:打开多个文件时,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())
#每次打印日志时加上当前时间
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 \n"%time_current)
def func3():
log()
func3()
time.sleep(2)
def func4():
log()
func4()
小提示: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 1 res=calculate(6)
print("阶乘的结果为:",res)
12.高阶函数:与数学中的复合函数类似,函数的互相嵌套
#高阶函数
def func(a,b,f):
res=f(a)+f(b)
print(res) #求两个数的绝对值之和
func(-5,4,abs)#abs绝对值函数
13.作业
第三周 day3 python学习笔记的更多相关文章
- 第五周 day5 python学习笔记
1.软件开发的常规目录结构 更加详细信息参考博客:http://www.cnblogs.com/alex3714/articles/5765046.html 2.python中的模块 ...
- 第二周 day2 python学习笔记
1. python中的三元运算: result=value1 if 条件 else value2 如果条件成立,result=value1 如果条件不成立,result=value2 2. pytho ...
- 第一周 day1 Python学习笔记
为什么要学习Python? Python擅长的领域 1. python2.x中不支持中文编码,默认编码格式为ASCII码,而python3.x中支持Unicode编码,支持中文,变量名可以为中文,如: ...
- 第六周 day6 python学习笔记
1.Python面向对象编程OOP(Object Oriented Programming) 封装:可以隐藏实现细节,使代码模块化 继承:可以扩展已存在的代码模块,可以使代码实现重用 多态:一种接口, ...
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- 20145330第九周《Java学习笔记》
20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...
- 20145330第八周《Java学习笔记》
20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...
- 20145330第七周《Java学习笔记》
20145330第七周<Java学习笔记> 第十三章 时间与日期 认识时间与日期 时间的度量 GMT(格林威治标准时间):现在不是标准时间 世界时(UT):1972年UTC出来之前,UT等 ...
随机推荐
- 关于display:none;和id特性的一些需要注意的地方
关注点一: display:none;一旦用于某个元素,那个这个元素在页面中就不再占据位置. visibility:hidden;用于某个元素时,这个元素还会占据位置. 关注点二: 即使使用了disp ...
- C#利用WebBrowser获取完整COOKIE
代码: http://www.cnblogs.com/hsapphire/archive/2010/09/10/1823384.html http://blog.csdn.net/attilax/ar ...
- 怎么用代码弹回 UITableView 中左滑出来的删除按钮
点击取消,让删除按钮弹回去 [tableView setEditing:NO] 初学 ios 真是大菜鸟,这么简单的一个问题搞了 3 个小时
- WPF的布局--DockPanel
1.DockPanel: 以上.下.左.右.中为基本结构的布局方式 类似于Java AWT布局中的BorderLayout. 但与BorderLayout不同的是,每一个区域可以同时放置多个控件,在同 ...
- 【c++】访问控制
1. 类内的访问控制 在基类中,public和private具有普通的含义:用户(即基类的对象)可以访问public成员(包括函数.数据),而不能访问private成员.private只能被基类的成 ...
- 周记5——随机撒花特效、动态修改伪元素样式、contenteditable属性、手机端调试利器VConsole、浏览器端debug调试
记录一些小零碎知识点,以便日后查看~ 1.随机撒花特效 教师节快到了,公司的产品提出一个需求:在IM(即时聊天)聊天界面弹出教师节的祝福“广告”,用户点击“发送祝福”按钮,聊天界面会随机撒花.这里的重 ...
- IDE vscode识别webpack中alias配置路径
引言网上看到一篇关于 ctrl+鼠标左键无法识别别名路径的问题,最后有人回复的方法只能在ts项目中可以识别 https://segmentfault.com/q/1010000011911879 最后 ...
- Golang教程:goroutine协程
在上一篇中,我们讨论了并发,以及并发和并行的区别.在这篇教程中我们将讨论在Go中如何通过Go协程实现并发. 什么是协程 Go协程(Goroutine)是与其他函数或方法同时运行的函数或方法.可以认为G ...
- 【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
@RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言 ...
- Firebird DatabaseAccess WireCrypt DB2Provider
目前最新的Firebird版本是:3.0.3 使用过程的一些必经问题,嵌入式的模式就不再说了. 在使用标准Server版时,第一个要考虑的就是数据库文件的存放位置,默认配置放在windows/syst ...