day08 做了一下午 还算像样点儿

PYTHON学习笔记

第一章 计算机基础

1.1 硬件

计算机由CPU,主板,硬盘,内存,显卡,网卡等构成,硬件之间无法自行沟通联系

1.2 操作系统

操作系统用来控制硬件的工作,常见的操作系统有如下几种:

···Windows (XP/7/8/10/SERVER)

···Linux (centOS/ubantu/red hat)

···Mac

1.3 解释器和编译器

编程语言的开发者写出来的一种工具,将用户写的代码转换为二进制代码的010101交给操作系统去执行。

···解释型和编译型语言

···解释型语言 将代码一行一行交给电脑去处理,类似于同声翻译,python、PHP、ruby等

···编译型语言 将代码一次性完整的编译完成,生成一个新文件,将新文件交给电脑去执行,类似于说完之后整体翻译,C、C++、C#、JAVA、Go等

1.4 软件(应用程序)

电脑上的工具,类似于 记事本、图片查看、游戏等

1.5 进制

计算机的所有存储都只能依托于二进制的0和1,例如 电脑上储存的图片、音频、视频都是二进制,QQ微信发送的聊天信息也都是二进制。

···二进制 计算机内部识别

···八进制 现在很少用到

···十进制 人类识别

···十六进制 多数用来表示二进制,其表示的更短更节省资源 起始位置为 \x

二进制八进制十进制十六进制
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F

 

第二章 Python入门

2.1 环境的安装

···解释器 Python3

为了使解释器可以在终端中方便运行,可把解释器的路径添加进环境变量中

···开发工具 Pycharm

2.2 编码

···编码基础

2.2.1. ASCII 最初美国人发明的只有英文数字和字符的

2.2.2. Unicode 万国码 包含目前所有的文字 长度为4个字节 32位,中文通常只占3个字节,24位

2.2.3. utf-8 目前常用的编码,能有效压缩Unicode编码,

···如果要修改默认编码 则需在文件头加上如下命令:

  # -*- coding:utf-8 -*- 

···需要注意的是,文件使用什么类型的编码编写,就要用什么类型的编码打开。

2.3 变量

···变量是为了给一个值起一个别名,方便后期调用

···命名规范 只能存在字母、数字、_(下划线) 且 数字不能为首位,还需规避python中的固有名词

第三章 数据类型

3.1 整形 int

3.1.1 整形的长度

···python2.7 中存在 int 、long

···python3 中int包含了long

3.1.2 整除

···python2.7 中 除法只能保留整数

···除非在题头引入命令:

    from __future__ import division

 

···python3 中 除法可以保留小数

 

3.2 布尔值 bool

··· ’ ‘空字符串/str()、0/int()、空列表[]/list()、空元组(,)/tuple()、空字典{}/dict()、空集合set()、None的布尔值为False

3.3 字符串 str

··· 字符串是在python文件中最常见的,为不可变类型,在python内存中的编码格式为Unicode

··· 字符串方法

3.3.1 大写 upper

v1='alex'
v2=v1.upper()
print(v2) # 'ALEX'
v3=v1.isupper()
print(v3) # False 此为判断是否为大写

3.3.2 小写 lower

v1='ALEX'
v2=v1.lower()
print(v2) # 'alex'
v3=v1.islower()
print(v3) # False 此为判断是否为小写

3.3.3 判断是否为数字 isdecimal 优先 、 isdigit

v = '1'
# v = '二'
# v = '②'
v1 = v.isdigit()  # '1'-> True; '二'-> False; '②' --> True
v2 = v.isdecimal() # '1'-> True; '二'-> False; '②' --> False
v3 = v.isnumeric() # '1'-> True; '二'-> True; '②' --> True
print(v1,v2,v3)
# 以后推荐用 isdecimal 判断是否是 10进制的数。

3.3.4 去除空白以及指定字符串 strip 、 lstrip、rstrip

v1='  erwr  '
v2=v1.strip()
print(v2) # 'erwr'
v3=v2.strip('r')
print(v3) # 'ew'

3.3.5 分割 split、rsplit

v1='fewef'
v2=v1.split('w')
print(v2) # ['fe','ef']

3.3.6 以什么开始或结束 starswith 、 endswith

v1='fasfdsa'
v2=v1.starswith('fa')
print(v2) # True
v3=v1.endswith('s')
print(v3) # False

3.3.7 字符串格式化 format

v1='alex'
v2=29
v3='我叫{},今年{}岁'.format(v1,v2)
print(v3) # '我叫alex,今年29岁'

3.3.8 替换 replace

v1='abcd'
v2=v1.replace('ab','大傻')
print(v2) # '大傻cd'

3.3.9 编码和解码 encode 、 decode

v1='你好'
v2=v1.encode('utf-8')
print(v2) # b'\xe4\xbd\xa0\xe5\xa5\xbd' 转换成为二进制
v3=v2.decode('utf-8')
print(v3) # '你好'

3.3.10 加入 join

v1='hello'
v2='_'.join(v1)
print(v2) # 'h_e_l_l_o'

3.4 列表 list

··· 列表为有序序列,为可变类型

3.4.1 增 append/insert

v1=[1,2,3,4]
v1.append(5) # 序列末尾增加
print(v1) # [1,2,3,4,5]
v1.insert(3,'你好') # 在第一个参数位置之前加入,使其变为这个参数位置
print(v1)

3.4.2 删 remove / pop / clear / del

v1=[1,2,3,4]
v1.remove(4) # 元素4
print(v1) # [1,2,3]
v1.pop(0) # 索引位置0
print(v1) # [2,3]
del v1[1] # 索引位置0
print(v1) # [2]
v1.clear() # 清空
print(v1) # []

3.4.3 改 通过索引位置

v1=[1,2,3,4]
v1[2]='你好'
print(v1) # [1, 2, '你好', 4]

3.4.4 查 通过索引位置

v1=[1,2,3,4]
print(v1[2]) # 3

3.4.5 强制转换 list

v1 = list("asdfadfasfdadfasfd")
print(v1) # ['a', 's', 'd', 'f', 'a', 'd', 'f', 'a', 's', 'f', 'd', 'a', 'd', 'f', 'a', 's', 'f', 'd']
v1 = list( (11,22,33,44,) )
print(v1) # [11, 22, 33, 44]

3.4.6 排序 sort

v1=[2,3,5,1]
v1.sort(reverse=False)
print(v1) # [1,2,3,5]
v1.sort(reverse=True)
print(v1) # [5,3,2,1]

3.4.7 反转/倒序 reverse

v1=[1,2,3,4]
v1.reverse()
print(v1) # [4,3,2,1]

3.5 元组 tuple

···元组为有序序列,不可变类型

3.5.1 无法增,删,改

3.5.2 查 通过索引位置

v1=(1,2,3,4)
print(v1[2]) # 3

3.5.3 强制转换 tuple

v1 = tuple("asdfadfasfdadfasfd")
print(v1) # ()'a', 's', 'd', 'f', 'a', 'd', 'f', 'a', 's', 'f', 'd', 'a', 'd', 'f', 'a', 's', 'f', 'd')
v1 = tuple( [11,22,33,44] )
print(v1) # (11, 22, 33, 44)

3.6 字典 dict

··· 字典为无序序列,为可变类型,列表/字典/集合 -> 不能放在集合中+不能作为字典的key

3.6.1 增、改 通过键值对 有则更改,无则新建、update

v1={'name':'alex','age':19}
v1['name']='王二'
print(v1) # {'name':'王二','age':19}
v1['gender']='男'
print(v1) # {'name':'王二','age':19,'gender':'男'}
v1.update({'name':'王麻子''智商':'无'})
print(v1) # {'name': '王麻子', 'age': 19, 'gender': '男', '智商': '无'}

3.6.2 删 del

v1={'name':'王二','age':19,'gender':'男'}
del v1['gender']
print(v1) # {'name':'王二','age':19}

3.6.3 查 通过键值对查询 、 get

v1={'name':'王二','age':19,'gender':'男'}
print(v1['name']) # '王二'
print(v1.get('name',666)) # '王二'   若有此键,返回对应的值
print(v1.get('alex',666)) # 666 若无此键,返回第二个参数

3.6.4 取出所有的键、值、键值对

v1={'name':'王二','age':19,'gender':'男'}
v2=v1.keys()
v3=v1.values()
v4=v1.items()
print(v2) # ['name','age','gender']
print(v3) # ['王二', 19, '男']
print(v4) # [('name', '王二'), ('age', 19), ('gender', '男')]

 

3.7 集合 set

··· 集合为无序序列,为可变类型,集合内的值唯一,列表/字典/集合 -> 不能放在集合中+不能作为字典的key

3.7.1 增 add

v1={1,2,3,4}
v1.add(555)
print(v1) # {1,2,3,4,555}

3.7.2 删 discard

v1={1,2,3,4}
v1.discard(2) # 元素
print(v1) # {1,3,4}

3.7.3 批量添加 update

v1={1,2,3,4}
v1.update({4,5,6,7})
print(v1) # {1, 2, 3, 4, 5, 6, 7} 去重,添加

3.7.4 交集 intersection

v1={1,2,3,4}
v2={4,5,6}
v3=v1.intersection(v2)
print(v3) # {4}

3.7.5 并集 union

v1={1,2,3,4}
v2={4,5,6}
v3=v1.union(v2)
print(v3) # {1, 2, 3, 4, 5, 6}

3.7.6 差集 difference

v1={1,2,3,4}
v2={4,5,6}
v3=v1.difference(v2) # v1有,v2没有的
print(v3) # {1, 2, 3}
v4=v2.difference(v1) # v2有,v1没有的
print(v4) # {5, 6}

3.7.7 对称差集 symmetric_difference

v1={1,2,3,4}
v2={4,5,6}
v3=v1.symmetric_difference(v2)
print(v3) # {1, 2, 3, 5, 6}

3.8 公共功能

3.8.1 索引 str/list/tuple/dict(键)

3.8.2 切片 str/list/tuple

3.8.3 步长 str/list/tuple

3.8.4 for循环 str/list/tuple/dict(键)/set

3.8.5 len计算长度 str/list/tuple/dict(键)/set

3.9 嵌套

第四章 文件操作

4.1 文件基本操作

···把大象放进冰箱需要几步? 打开,操作 ,关闭

file=open('路径',mode='读、写、追加',encoding='编码格式')
file.read()
file.write()
file.close

4.2 打开模式

4.2.1 r 只读 w 只写 a 只追加

4.2.2 r+ 读和写 w+ 写和读(清空先) a+ 写和读

4.2.3 rb 二进制只读 wb 二进制只写 ab 二进制只追加

4.2.4 r+b 二进制读和写 w+b 二进制写和读(清空先) a+b 二进制写和读

4.3 操作

4.3.1 read() 全部读取到内存

4.3.2 read(1)

···表示一个字符

obj = open('a.txt',mode='r',encoding='utf-8')
data = obj.read(1) # 1个字符
obj.close()
print(data)

···表示一个字节

obj = open('a.txt',mode='rb')
data = obj.read(3) # 1个字节
obj.close()

4.3.3 write()

···字符串

obj = open('a.txt',mode='w',encoding='utf-8')
data = obj.write()
obj.close()

···二进制

obj = open('a.txt',mode='wb')
info='ddddd'.encode('utf-8')
data = obj.write(info)
obj.close()

4.3.4 seek() 光标所在的字节位置

obj = open('a.txt',mode='r',encoding='utf-8')
obj.seek(3) # 跳转到指定字节位置
data = obj.read()
obj.close()

print(data)




obj = open('a.txt',mode='rb')
obj.seek(3) # 跳转到指定字节位置
data = obj.read()
obj.close()

print(data)

4.3.5 tell() 获取当前光标的位置

obj = open('a.txt',mode='rb')
# obj.seek(3) # 跳转到指定字节位置
obj.read()
data = obj.tell()
print(data)
obj.close()

4.3.6 flush() 强制将内存中的数据写入到硬盘,在不关闭的状态下

v = open('a.txt',mode='a',encoding='utf-8')
while True:
   val = input('请输入:')
   v.write(val)
   v.flush()

v.close()

4.4 关闭文件

with open ('a.txt',mode='r',encoding='utf-8') as file:
   file.read() # # 缩进中的代码执行完毕后,自动关闭文件

4.5文件内容修改

with open('a.txt',mode='r',encoding='utf-8') as f1:
   data = f1.read()
new_data = data.replace('飞洒','666')

with open('a.txt',mode='w',encoding='utf-8') as f1:
   data = f1.write(new_data)
f1 = open('a.txt',mode='r',encoding='utf-8')
f2 = open('b.txt',mode='w',encoding='utf-8')

for line in f1:
   new_line = line.replace('阿斯','死啊')
   f2.write(new_line)
f1.close()
f2.close()
with open('a.txt',mode='r',encoding='utf-8') as f1, open('c.txt',mode='w',encoding='utf-8') as f2:
   for line in f1:
       new_line = line.replace('阿斯', '死啊')
       f2.write(new_line)

 

 

 

posted @ 2020-05-03 18:18  投降输一半!  阅读(135)  评论(0编辑  收藏  举报