CSS Ribbon

Reproducing the GitHub Ribbon in CSS

路飞学城Python-Day4

29.二进制转换
计算机使用的语言就是二进制
古时候,人们使用信鸽、书信、千里马等方式。但是这样的方式是不可靠的,时间也长。
古时候的军方,通过烽火狼烟进行简单的信息交流

30.二进制的转换(II)
8 4 2 1 引入二进制和十进制的互相转换
342 表示二进制

31.二进制转换小练习

342表示二进制

2**9 = 512
2**8 = 256
256 128 64 32 16 8 4 2 1
1 0 1 0 1 0 1 1 0
python小语法拿二进制:bin()

32.ASCII码与二进制

 


对于数字和字母就写死了对应关系,于是出现了ASCII码表,计算机最原始的数字转文字对应关系,一共能存256个字符
请把 #Alex按ASCII表转换为二进制
# 51 00110011
.......
计算机最终就会按照二进制的格式去存储,计算机如何区分哪段代表什么呢?
简单粗暴的使用8位代表所有的字符,每一次计算机只要去取8位,不足的补0就行
每一位0或者1所占的空间单位位bit(比特),这是计算机里最小的表示单位
8bit = 1 bytes 字节,最小的存储单位,1byte=1B
1KB = 1024 bytes
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
1ZB = 1024EB
1YB = 1024ZB
1BB = 1024YB

33.字符编码的演化
中文的第一套字符编码 GB2312 称为国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也是用次=此编码
共7445个图形字符,其中汉字6763个,但是还是太少了,压根不够用啊老铁。
1995年发布GBK1.0,GBK编码能够用来同时表示繁体字和简体字,该编码标准兼容GB2312,共收录210003个,同时包含中日韩等所有文字
2000年发布GB18030是对GBK编码的补充,覆盖中文、日文、朝鲜语等包括少数民族,其中共收录27484个,兼容GBK和GB2312字符集
windows上使用的编码格式就是GBK
BIG5编码是台湾的繁体中文字符集
但是每套地区都用自己的编码真的合适么?
为解决每个国家不同编码间不互通的问题,ISO标准组织用了一套同一的编码,支持全世界
Unicode编码,国际标准字符集,它将世界上各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息交换。Unicode
规定所有的字符和符合最少有16位表示(2个字节)
为了解决Unicode的存储方案,出现了UTF-8,是对Unicode编码的压缩和优化,不再使用最少2个字节,而是将所有的字符和符合进行分类,ascii
中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存

【总结】
ASCII - GBK2312 -GBK-Unicode - Utf-8
以后的所有的电脑大部分编码都是utf-8
都是中国规定所有的编码格式都必须支持GBK

34.Python里使用字符编码
Python2和Python3里使用的字符编码是不同的
Python2使用的是ASCII码
Python3使用的默认编码是UTF-8
Python2用ASCII码是不支持中文的,默认执行具有中文的py文件就会处理不了中文,会报错,只能手动指定文件的编码格式
声明文件的编码使用 #! -*- coding: utf-8 -*- OR #!encoding:utf-8
一定要写在文件的第一行

35.浮点数和科学计数法
什么是浮点数?
浮点数就是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)
乘以某个基数的整数次幂得到(10**4,10为基数),这种表示方法类似于基数为10的科学计数法

 

 

36.浮点数的精确度问题
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差
Python默认的是17位精度,也就是小数点后16位,尽管有16位,但是这个精度却是越往后越不准的,这个问题是不只存在python中
其他的语言也是有这样的问题,原因是与浮点数的存储结构有关

37.列表类型
如何通过一个变量存储公司所有员工的工资?
列表是一个数据的集合,集合内可以放任何数据类型。可对集合进行方便的增删改查操作
L1 = [] #定义一个空列表
L2 = ['a','b','c','d']#存4个值
列表的功能
创建
查询
切片
增加
修改
删除
循环
排序
【创建】
L1 = []
L1 = list()
【查询】
L2[2] #通过索引值查询
L2[-1]#从右边通过索引值开始查询
列表是可以重复的,查询的前提是得知道索引,但是也可以查找索引值
L2.index(6)
index()只会从左右往后找,找到第一个就停止,如果有重复的只能再查询
查有多少重复值
L2.count(4)
【切片】
取某一部分的值
L2[0:2]或者L2[:2]
取值范围是[0~2),顾头不顾尾(左包含,右不包含)
注意:切片不能从右往左,只能从左往右>>L2[-5:]或L2[-5:0]
隔N个取值,步长取值
L2[:7:2]#0-7,隔2个取值

38.列表类型-修改及插入
【增加】
L2.append("something")#追加,只能在最后加
【插入】
L2.insert(0,"abc")
【修改】
L2[2] = "OK"

39.列表类型-其他方法
【删除】
L2.pop()#删除最后一个
L2.remove("abc")#指定删除某一个,但是只能删除一个值,重复值不能全部都删除
del L2[2]
注意:del是python自己的全局删除指令,del可以删除任何值
del可以删除多个,但是remove只能删除一个
【循环】
for i in L2:
print("i")
for >> for loop
in >> 把i这个值取出来赋值,i就是临时变量,变量名可以随便取
for 循环的语法就是for i in.....:
range(0,10)等于临时生成一个0~10的列表

【PS】
for 和 while循环的区别
死循环:while True:
while循环可以是死循环,但是for循环就是有边界的,不能是死循环


【排序】
列表是通过索引值取值的
排序的语法:L2.sort()
排序是不支持int和str两种类型的混合排序的
此处的排序是按照ASCII表的顺序依次排序的

【列表拼接】
L3.extend(L2)

【其他】
L2.clear()#整个列表清空
L3 = L2.copy() #完全独立的拷贝

40.列表练习题讲解
41.列表练习题讲解2
具体详见https://www.cnblogs.com/pandaboy1123/p/9254662.html

42.深浅copy
如何判断变量的内存地址 id()
打印出来的是变量的唯一标识符
=赋值:数据完全共享(=赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变
浅拷贝:浅拷贝:数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层)
深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)尽量不要用deepcopy
深拷贝就是完完全全复制了一份,且数据不会互相影响,因为内存不共享。

43.字符串类型讲解
字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单、双、或三引号中间包含的内容成为字符串
特性
1.有序;
2.不可变;
python里的源码因为是C语言写的,所以看不到源码,只能看到解释
一个字符串可以有很多的操作
swapcase()>>大小写转换
capitalize()>>首字母大写
casefold()>>去除大小写
center()>>自动填充
count()>>统计相同的字符串的个数
endswith()>>以什么为结尾
expandtabs()>>扩展TAB键
find()>>查找一个值,并返回其索引值
format()>>赋值,格式化的另一种方法
index()>>返回某一个字符串的索引值
isalnum()>>阿拉伯的字符
isalpha()>>阿拉伯字符
isdecimal()>>是否是整数
isdigit()>>只能是整数
isidentifier()>>字符串是一个可用的,合法的变量
islower()>>是否是小写
isnumeric()>>只有数字
isprintable()>>是否是可以打印的
isspace()>>是否是空格
istitle()>>是否是标题[第一个字符大写]
isupper()>>是否全是大写
join()>>把列表变成字符串,完成列表元素的拼接''.join()
ljust()>>自动填充(长度需要自定义,默认填充空格)
lower()>>转换小写
lstrip()>>脱去左边的空格
strip()>>脱去空格
rstrip()>>脱去右边的空格
maketrans()>>ASCii表的对应关系
partition()>>
replace()>>替换
rfind()>>从右边开始找
rindex()>>右边开始找索引
rjust()>>右边自动填充(长度需要自定义,默认填充空格)
split()>>以空格形式分列表(可以指定任意字符串)
rsplit()>>从右边开始区分,区分后的字符串进列表
startswith()>>以什么字符开始
zfill()>>写一个长度,把字符串变成这个长度,不足的用0填充

45.元祖类型
有序的不可变的数据类型,元祖其实跟列表不同,也是存一组数,只不过一旦创建,便不能再修改
特性
不可变;
元祖本身不可变,如果元祖中包含其他可变元素,这些可变元素可以改变
功能
index
count
切片
使用场景
显示的告知别人,此处数据不能修改
数据库连接配置信息

46.Hash函数
Hash一般被翻译为"散列",就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值
这种转换是一种压缩映射,也就是散列值得空间通常小于输入空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来
唯一的确定输入值
简单来说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数
特征
hash值的计算是依据这个值的一些特征,这就要求被hash的值必须是固定的,因此被hash的值必须是不可变的
用途:
文件签名
md5加密
密码验证
hash的算法不一定能保证完全唯一,需要解决如何避免冲突
md5的特性就是不能反解

47.字典类型及特性
字典是一种key-value的数据类型,使用就像我们上学用的字典,通过笔画、字母来查对应页的详细内容
特性:
key-value结构
key必须可hash,且必须为不可变的数据类型,必须唯一
可以存放任意多个值,可修改,可以不唯一
无序
查找速度快
用法:
{"k1":"v1","k2","v2"}
key是不能重复的,通过key去找value
为什么字典的查找速度快?
用hash的数字找比较快,数字可以用二分查找法,但是字典的查询方式更快

posted on 2018-07-01 19:43  pandaboy1123  阅读(197)  评论(0编辑  收藏  举报

导航