第一章 计算机基础
1.1 硬件
计算机由CPU,主板,硬盘,内存,显卡,网卡等构成,硬件之间无法自行沟通联系
1.2 操作系统
操作系统用来控制硬件的工作,常见的操作系统有如下几种:
···Windows (XP/7/8/10/SERVER)
···Linux (centOS/ubantu/red hat)
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'xe4xbdxa0xe5xa5xbd' 转换成为二进制
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)