字符编码
三大核心硬件
所有软件都是运行硬件之上的,与运行软件相关的三大核心硬件为cpu、内存、硬盘,我们需要明确三点:
1、软件运行前,软件的代码及其相关数据都是存放于硬盘中的
2、任何软件的启动都是将数据从硬盘中读入内存,然后cpu从内存中取出指令并执行
3、软件运行过程中产生的数据最先都是存放于内存中的,若想永久保存软件产生的数据,则需要将数据由内存写入硬盘
文本编辑器读取文件内容的流程
阶段1、启动一个文件编辑器(文本编辑器如nodepad++,pycharm,word)
阶段2、文件编辑器会将文件内容从硬盘读入内存
阶段3、文本编辑器会将刚刚读入内存中的内容显示到屏幕上
python解释器执行文件的流程
阶段1、启动python解释器,此时就相当于启动了一个文本编辑器
阶段2、python解释器相当于文本编辑器,从硬盘上将test.py的内容读入到内存中
阶段3、python解释器解释执行刚刚读入的内存的内容,开始识别python语法
python解释器与文件本编辑的异同如下
相同点:前两个阶段二者完全一致,都是将硬盘中文件的内容读入内存,详解如下
python解释器是解释执行文件内容的,因而python解释器具备读py文件的功能,这一点与文本编辑器一样
不同点:在阶段3时,针对内存中读入的内容处理方式不同,详解如下
文本编辑器将文件内容读入内存后,是为了显示或者编辑,根本不去理会python的语法,而python解释器将文件内容读入内存后,可不是为了给你瞅一眼python代码写的啥,而是为了执行python代码、会识别python语法)
字符编码介绍
什么是字符编码?
人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等而计算机只能识别二进制数
字符编码的应用
我们学习字符编码就是为了存取字符时不发生乱码问题
1、内存中固定使用unicode无论输入任何字符都不会发生乱码
2、我们能够修改的是存/取硬盘的编码方式,如果编码设置不正确将会出现乱码问题。乱码问题分为两种:存乱了,读乱了
2.1 存乱了:如果用户输入的内容中包含中文和日文字符,如果单纯以shift_JIS存,日文可以正常写入硬盘,而由于中文字符在shift_jis中没有找到对应关系而导致存乱了
2.2 读乱了:如果硬盘中的数据是shift_JIS格式存储的,采GBK格式读入内存就读乱了
存乱了:解决方法是
编码格式应该设置成支持文件内字符串的格式
取乱了:解决方法是
解决方法是,文件是以什么编码格式存如硬盘的,就应该以什么编码格式读入内存
作业
1.用至少三种方式完成对列表l1的去重操作
方式一:
l1 = ['b','c','d','b','c','a','a']
l=set(l1)
l1=list(l)
print(l1)
方式二:
l=[]
for i in l1:
if i not in l:
l.append(i)
print(l)
方式三:
l={}.fromkeys(l1).keys()
l=list(l)
print(l)
2.关系运算
有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons = {'jason', 'egon', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
1.求出即报名python又报名linux课程的学员名字集合
l=pythons&linuxs
print(l)
2.求出所有报名的学生名字集合
l=pythons|linuxs
print(l)
3.求出只报名python课程的学员名字
l=pythons-linuxs
print(l)
4.求出没有同时这两门课程的学员名字集合
l=linuxs^pythons
print(l)
ps: 衍生小知识总结如何找出两个列表中相同元素与不同元素
list1 = [1,2,3]
list2 = [3,4,5]
找到相同元素求两个列表的并集,找到两个列表不同元素求差集
3.单位换算
bit、bytes、KB、MB、GB、TB、PB
1bytes=8bit
1KB=1024bytes
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
4.请列举出你所知道的PEP8规范
每一级缩进使用4个空格1
各种右括号前不要加空格。
逗号、冒号、分号前不要加空格。
函数的左括号前不要加空格。
序列的左括号前不要加空格。
操作符左右各加一个空格,不要为了对齐增加空格。
函数默认参数使用的赋值符左右省略空格。
不要将多句语句写在同一行,尽管使用‘;’允许。
if/for/while语句中,即使执行语句只有一句,也必须另起一行。
5.阐述编码表ASCII、GBK、unicode各自特点及由来
ASCII是为了让计算机识别英文字符和阿拉伯数字而发明的。特点:只能识别阿拉伯数字和英文字符,一个字符占1bytes
GBK是为了计算机能识别中文字符、英文字符和阿拉伯数字而发明的。特点:可以识别中文字符、英文字符和阿拉伯数字,一个字符占3bytes
unicode是为了让计算机能识别所有的字符而发明的。 特点可以识别所有字符,每个字符占2bytes,生僻字占3个bytes