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的数字找比较快,数字可以用二分查找法,但是字典的查询方式更快

路飞学城Python-Day4的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. asp.net中Server.MapPath的使用

    http://www.studyofnet.com/news/184.html   本文导读:Server.MapPath()的全名是System.Web.HttpContext.Current.Se ...

  2. 发现个很变态的css问题,记录下。

    注意看Ul:nth-child(){} 本来是一一对应的,因为后来改版在div中加了<h1></h1>标记后,竟然自动后移了.... 不可思议,莫明奇妙

  3. 使用CablleStatement调用存储过程

    /** * 使用CablleStatement调用存储过程 * @author APPle * */ public class Demo1 { /** * 调用带有输入参数的存储过程 * CALL p ...

  4. 路飞学城Python-Day23

    1.计算机基础 Python可以实现各种应用软件,类比word.QQ.爱奇艺等,但是应用这些软件需要计算机硬件, 计算机发展的过程就是人类不断的希望机器去取代人力,解放更多的人力,最终极的理想就是完全 ...

  5. [Linux C]系统调用(system call)和库函数调用(Library functions)

    Linux 下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions).系统调用实际上就是指最底层的一个调用,在 linux 程序设计里面就是底层 调 ...

  6. CommonJS 与 ES6 的依赖操作方法(require、import)

    CommonJS:http://www.commonjs.org/specs/modules/1.0/ ES2015的 export:https://developer.mozilla.org/en- ...

  7. 利用请求的JSON数据创建图形图层

    先看效果图: 包含三个部分:信息窗口(标题是要素的某个属性信息,其余是感兴趣的属性信息).图上图形按照某一属性大小不一显示,图例 1.创建底图用于存放以上三部分: "esri/Map&quo ...

  8. js数组的一些骚操作 (用一行代码实现)

    1.扁平化n维数组 1.终极篇 [1,[2,3]].flat(2) //[1,2,3] [1,[2,3,[4,5]].flat(3) //[1,2,3,4,5] [1[2,3,[4,5[...]].f ...

  9. 正式版的Linux Kernel 5.1来了,非LTS

    大神Linus Torvalds于今天发布了Linux Kernel 5.1内核正式版,在对现有功能进行改进的同时还带来了很多重要的改进.本次版本更新历时一个半月,不过值得注意的是它并非是长期支持版本 ...

  10. python异常处理,多线程,多进程

    什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Pyth ...